Добрый вечер. Все не могу понять в чем ошибся, смущает, что 26 строка не реализовывает свой потенциал)
Так же, не пойму вот какую вещь.
Если оставить все как было, не возникает никаких проблем.
ArrayList<String> strings = new ArrayList<>();
strings.add("роза");
strings.add("лоза");
strings.add("лира");
А если, поменять местами strings.add("роза");
с strings.add("лоза");
,то возникает исключение:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:265)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:239)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:231)
at java.util.ArrayList.add(ArrayList.java:462)
at com.javarush.task.task07.task0716.Solution.fix(Solution.java:25)
at com.javarush.task.task07.task0716.Solution.main(Solution.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Как вообще это связано ???
Спасибо большое тому, кто поможет.
package com.javarush.task.task07.task0716;
import java.util.*;
import java.lang.*;
public class Solution {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
strings.add("роза");
strings.add("лоза");
strings.add("лира");
strings = fix(strings);
for (String string : strings) {
System.out.println(string);
}
}
public static ArrayList<String> fix(ArrayList<String> strings) {
for(int k = 0; k < strings.size(); k++){
String s = strings.get(k).toLowerCase();
if(s.contains("р") && s.contains("л")){
continue;
}
else {
if(s.contains("л")){
strings.add(strings.get(k)); // не работает.
}
else if(s.contains("р")){
strings.remove(strings.get(k));
}
}
}
return strings;
}
}