java - 在java中合并列表中相似项目的快速方法

标签 java list merge

例如我有这个列表:

myList = ['2','3','a','b','c','3','5','£','a','4',5','=']

如果相似的元素彼此相邻,我想将它们合并在一起。 所以我想最终得到一个新列表,如下所示:

newList = ['23', 'abc', '35', '£', 'a', '45', '=']

最佳答案

您需要定义一个方法来测试相似性,并使用它来将字符组合成字符串。

public static void main(String... args) throws Exception {
    List<Character> myList = Arrays.asList('2', '3', 'a', 'b', 'c', '3', '5', '£', 'a', '4', '5', '=');
    List<String> grouped = new ArrayList<>();
    StringBuilder group = new StringBuilder();
    String prevType = null;
    for (Character ch : myList) {
        String type = typeOf(ch);
        if (prevType != null && type != prevType) {
            grouped.add(group.toString());
            group.setLength(0);
        }
        group.append(ch);
        prevType = type;
    }
    grouped.add(group.toString());
    System.out.println("myList= " + myList);
    System.out.println("newList= " + grouped);
}

private static String typeOf(Character ch) {
    return Character.isDigit(ch) ? "digit" :
            Character.isAlphabetic(ch) ? "alpha" :
                    "other";
}

打印

myList= [2, 3, a, b, c, 3, 5, £, a, 4, 5, =]
newList= [23, abc, 35, £, a, 45, =]

关于java - 在java中合并列表中相似项目的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714425/

相关文章:

regex - 如何使用正则表达式将所有内容移动到 Notepad++ 中的一行

java - 服务器端 RemoteService 实现?

java - 损坏的 Eclipse 构建路径?

c# - 如何对 List<T> 进行排序?

python - 如何将字符和字节列表转换为纯字节列表?

git - 我如何从 gitlab 中的 fork 创建 merge 请求

java - 如何在Android中正确初始化对象/数据

java - 如何将 JTextField 添加到 JFrame 的 MenuBar?

python - list[index, :] in Python] 的含义是什么

python - 将两个时间表与一些省略的数据合并