我正在尝试用Java编写一种方法,该方法将压缩字符串的ArrayList。例如,如果我们有一个由字符串["0", "1", "2", "3"]
组成的ArrayList,则ArrayListMethods.condense(["0", "1", "2", "3"])
会将ArrayList更改为["01", "23"]
。
import java.util.ArrayList;
public class ArrayListMethods
{
public static void condense(ArrayList<String> array){
for (int i = 0; i < array.size(); i++){
array.get(i) += array.get(i + 1);
array.remove(i + 1);
}
}
}
我遇到了错误,但是我不确定为什么。
没关系,问题已解决。我重写了这样的代码:
public static void condense(ArrayList<String> array){
for (int i = 0; i < array.size() - 1; i++){
String one = array.get(i);
String two = array.get(i+1);
String both = one+two;
array.set(i, both);
array.remove(i + 1);
}
}
答案 0 :(得分:1)
array.get(i)不是变量,它是一个函数调用,在您的情况下返回String
。
您不能为其分配任何内容。
您可能想要类似array.set(i, array.get(i + 1))
答案 1 :(得分:1)
如果您确定总是有偶数个元素,则可以执行以下操作:
public static void condense(ArrayList<String> array){
for (int i = 0; i < array.size(); i++){
array.set(i, array.get(i)+array.get(i + 1));
array.remove(i + 1);
}
}
一种更好的方法应该是:
public static void condense2(List<String> list){
int groupSize = 2;
List<String> result = new ArrayList<>();
for (int i = 0; i < list.size(); i += groupSize) {
result.add(String.join("", list.subList(i,Math.min(i + groupSize, list.size()))));
}
System.out.println(result);
}
通过第二种方法,您不仅可以连接两个字符串,还可以通过更改groupSize来从["012", "345", "6"]
的输入中获得类似["0","1","2","3","4","5","6"]
的效果