java - 根据某些元素合并数组列表的字符串如何

标签 java sorting arraylist

我想对文本文件中的数据列表执行一个函数,但我不知道如何执行。我对如何操作数组和字符串的理解很弱,这就是我做这个项目的原因。

我的文本文件如下所示:

0, 0. 50 0.5 66;
1, 0. 69 2. 70;
2, 0.5 48 0.5 71;
3, 1. 47 1. 75;
4, 2. 52 1. 74;
5, 2. 71 1. 80;
6, 3. 65 1. 61;
7, 4. 62 1. 68;

我正在寻找这样的结果:

0, 0. 50 0.5 66 0. 69 2. 70;
1、0.5 48 0.5 71;
2, 1. 47 1. 75;
3, 2. 52 1. 74 2. 71 1. 80;
4, 3. 65 1. 61;
5, 4. 62 1. 68;

前两个条目的第二个元素是相同的 (0.),我想将这些条目合并到同一行。第 4 行和第 5 行相同。

据我所知,我必须将文件读入数组列表,但我不知道如何查询数组列表以查找第二个元素具有相同值的所有条目,然后将整个条目与另一个条目合并条目。

我没有代码可以显示,因为我不知道从哪里开始。

感谢您的任何意见。

最佳答案

我不会使用列表,我会使用 map 。 map 有一个方法

put(key, value)

因此,如果您对给定行的第二列感兴趣,我会执行类似(伪代码)的操作

Map<String, String> lookup = new HashMap<String, String>();

for (...) {  // loop over the lines in the file

    String key = getSecondFieldFromLine(line); // implement this
    String val = lookup.get(key);


    if (val != null ) {
        merge(val, line);  // implement this according to whatever merge means
    }

    lookup.put(key, val);
}

您可能需要对此进行调整(例如,存储合并的结果以放入查找中),您在这里所做的是利用这样一个事实:对于 Map,放置和获取操作非常快(HashMap使用每个对象上的 hashCode 方法)。因此,您可以轻松确定是否已经有与您要查找的字段相关的行,因为您使用感兴趣的字段作为键来查找该字段所在的字段。

关于java - 根据某些元素合并数组列表的字符串如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022933/

相关文章:

java - 向 Android 应用程序添加通话按钮

java - 未找到驱动程序类

java - 使用 Arrays.sort 按最后一行对二维数组进行排序

r - 如何通过另一个变量对 data.frame 的列进行排序

Java - 检查 ArrayList 是否有重复项

java - 是否有一种数据结构同时具有 ArrayList 和类似 Map 的属性?

java - 如何将项目一项一项地添加到 ArrayList 中而不相互替换?

java - 外部 Jar 内的依赖注入(inject)

r - 如何根据 Shiny R 脚本的格式为 "%d/%m/%Y %H:%M:%S"的时间戳列对数据帧进行排序

java - 渲染 jsf 后 - 空 tbody 元素