java - 压缩 ArrayList 方法中的错误

标签 java arraylist

我正在尝试用 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);
        }
    }

最佳答案

如果您确定元素的数量始终为偶数,您可以执行以下操作:

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

关于java - 压缩 ArrayList 方法中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58583495/

相关文章:

java - 如何从PNG图片构建个人JFrame

java - 如何在 JSF 中与 (MySQL) 数据库交互

java - 替换java中的某些字符

c# - 在不丢失旧值的情况下,一项一项地从列表中取出项目

java - 如何将字符串(HashMap的ArrayList)转换为ArrayList

java - 将文档类型插入 XML 文档 (Java/SAX)

java - JPA + EclipseLink - 使用封闭的 EntityManager 进行延迟加载

javascript - Knockout.js - 单击所选项目时如何取消选中可观察的可用项目

java - Eclipse 一直告诉我删除 arraylist 的 Final 修饰符

java.util.Vector - 替代品