为了账号安全,请及时绑定邮箱和手机立即绑定

压缩 ArrayList 方法中的错误

压缩 ArrayList 方法中的错误

慕姐4208626 2024-01-05 15:04:38
我正在尝试用 Java 编写一个方法来压缩字符串的 ArrayList。例如,如果我们有一个由 String 组成的 ArrayList ["0", "1", "2", "3"],则会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);        }    }
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

如果你确定元素的数量总是偶数,你可以这样做:


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"]


查看完整回答
反对 回复 2024-01-05
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

array.get(i) 不是变量,它是String在您的情况下返回的方法调用。您无法为其分配任何内容。

你可能想要类似的东西array.set(i, array.get(i + 1))


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信