Java 压缩具有相同id的行

Java 压缩具有相同id的行,java,arrays,object,Java,Arrays,Object,嗨,我正在尝试循环这个结构: id string1 string2 different_string 1 test test asd 1 test test dsa 2 data data qwe 3 info info ewq 3 info info zxc 3 info info qaz 我有一些值完全相同的行,但其中一行不同,所以我尝试将这些数据压缩到一行中 这是我的代码:

嗨,我正在尝试循环这个结构:

id string1 string2 different_string
1  test    test      asd
1  test    test      dsa
2  data    data      qwe
3  info    info      ewq
3  info    info      zxc
3  info    info      qaz
我有一些值完全相同的行,但其中一行不同,所以我尝试将这些数据压缩到一行中

这是我的代码:

            int actual_id = list.get(0).num(); //I pick the first id = 1
            ArrayList<ArrayList<String>> listOLists = new ArrayList<ArrayList<String>>();

            ArrayList<String> items = new ArrayList<String>();
            for(int i = 0; i < list.size(); i++){
                if(list.get(i).id == actual_id){
                    String str = list.get(i).different_string;
                    items.add(str);
                    listOLists.add(items);
                    items.clear();
                }else {
                    actual_id = list.get(i).id;
                    i--;    
                }
            }
            for(int j = 0; j < listOLists.size(); j++) {
                System.out.println(listOLists);
            }

您的代码有点难理解,但据我所知,您的问题在于代码的这一部分:

if(list.get(i).id == actual_id){
                String str = list.get(i).different_string;
                items.add(str);
                listOLists.add(items);
                items.clear();
            }else {
您可以将
添加到
列表列表
,但在下一行中可以将其清除
items
仍然引用您刚刚添加到
listOList
的列表,因此当您清除它时,它也会清除
listOList
中的列表。您可能需要在
if
块中声明
,这样每次通过循环时都会创建一个新列表,如下所示:

{1, test, test, {asd, dsa}},{2, data, data, {asd}},{3, info, info, {ewq, zxc,qaz}}
if(list.get(i).id == actual_id){
            ArrayList<String> items = new ArrayList<String>();
            String str = list.get(i).different_string;
            items.add(str);
            listOLists.add(items);
        }else {
if(list.get(i).id==实际的\u id){
ArrayList items=新建ArrayList();
String str=list.get(i);
项目.添加(str);
列表列表。添加(项);
}否则{

这样,循环中的每个迭代都会创建一个新的
列表
,以避免出现此问题。我不知道这是否能解决您的所有问题,但我希望这能让您朝着正确的方向前进。

感谢您的建议,因为您提到列表也在
listOList
中被清除,我设法使用另一个列出并克隆我试图插入的列表