0

リストから重複を削除する良い方法を探しています。

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 のエントリのみが必要です。これは、関心のある列が 1 つしかないことを意味します。この場合、列 2 (a、b、c、..) です。これは簡単な例です。 300 列、最小 300000 行の大量のテーブルを処理する必要があります。もう 1 つの重要な点は、リスト内で方向性を失わないことです。

注: csv ファイルからデータを受け取ります。

4

2 に答える 2

2
  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
于 2013-10-09T09:28:24.720 に答える
1

カスタム メソッドを作成するisContain(List<String[]> rowList, String string)

private static boolean isContain(List<String[]> rowList, String secStr) {
    for (String[] strings : rowList) {
       if(strings[1].equals(secStr)){
           return true;
       }   
    }
    return false;
}

次のように、アイテムを追加する前にこのメソッドをチェックしListて、重複したアイテムを削除します。

 List<String[]> rowList = new ArrayList();
    String[] sts= new String[]{"1", "a", "abc"};
    boolean contain= isContain(rowList,sts[1]);
    if(!contain){
        rowList.add(sts);
    }
于 2013-10-09T09:21:46.033 に答える