基于某些元素合并数组列表的字符串如何

eva*_*ton 2 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;
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的结果:

0,0.5,50 0.5 66 0. 69 2. 70;
1,0.5 48 0.5 71;
2,17 1.75;
3,2.52 1. 74 2. 71 1. 80;
4,3.65 1. 61;
5,4.62 1. 68;

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

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

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

我很感激任何意见.

hvg*_*des 5

我不会使用列表,我会使用地图.Map有一种方法

put(key, value)
Run Code Online (Sandbox Code Playgroud)

所以,如果你对给定行的第二列感兴趣,我会做类似的事情(伪代码)

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);
}
Run Code Online (Sandbox Code Playgroud)

你可能不得不调整它(例如,存储合并的结果以放入查找中),你在这里做的是利用这样的事实:对于Map,put和get操作非常快(HashMap使用hashCode)每个对象上的方法).因此,您可以轻松确定您是否已经拥有要查找的字段的行,因为您使用感兴趣的字段作为键,以查找该字段所在的字段.