我正在寻找一种从列表中删除重复项的好方法。

List<String[]> rowList = new ArrayList();
    rowList.add(new String[]{"1","a", "abc"});
    rowList.add(new String[]{"2","b", "def"});
    rowList.add(new String[]{"3","c", "ghi"});
    rowList.add(new String[]{"4","a", "jkl"});
    rowList.add(new String[]{"5","d", "mno"});
    rowList.add(new String[]{"6","e", "pqr"});
    rowList.add(new String[]{"7","b", "stu"});


在此rwoList中,我只需要输入:1、2、3、5和6。这意味着我只有一列intrest,在这种情况下,是第2列(a,b,c,..)。
这只是一个简单的例子,我必须处理大量的表,这些表具有300列和最少300000行。另一个重要的一点是,我不会在列表中松开方向。

注意:我从csv文件接收数据。

最佳答案

  List<String[]> rowList = new ArrayList<String[]>();
  rowList.add(new String[]{"1","a", "abc"});
  rowList.add(new String[]{"2","b", "def"});
  rowList.add(new String[]{"3","c", "ghi"});
  rowList.add(new String[]{"4","a", "jkl"});
  rowList.add(new String[]{"5","d", "mno"});
  rowList.add(new String[]{"6","e", "pqr"});
  rowList.add(new String[]{"7","b", "stu"});

  Set<String[]> s = new TreeSet<String[]>(new Comparator<String[]>() {
         @Override
         public int compare(String[] o1, String[] o2) {
                return o1[1].compareTo(o2[1]);
        }
   });


通过添加到设置"s"删除重复项

   s.addAll(rowList);
   List<Object> res = Arrays.asList(s.toArray());


打印结果

   for (Object object : res) {
         String[] array = (String[])object;
         System.out.println(array[0]+" "+ array[1] +", "+array[2]);
    }


输出量

1 a, abc
2 b, def
3 c, ghi
5 d, mno
6 e, pqr

关于java - 从List <String []>中删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19267496/

10-11 22:35