java - 如何删除arraylist java中的重复数据

标签 java arraylist hashset

public class TestArticles {

public static void handlewords() throws IOException {

    String path = "C:\\Features.txt";
    String path1 = "C:\\train.txt";
    String path2 = "C:\\test.txt";

    File file = new File(path2);
    PrintWriter pw = new PrintWriter(file);


    Features ft = new Features();
    String content = ft.readFile(path);
    String [] words = content.split(" ");

    FileReader fr = new FileReader(path1);  
    BufferedReader br = new BufferedReader(fr);
    String line = null;
    while ((line = br.readLine()) != null) {       
    String [] word = line.split(" ");

    List<String> list1 = new ArrayList<String>(words.length);
    List<String> list2 = new ArrayList<String>(word.length);

   for(String s: words){
       list1.add(s);
       HashSet set = new HashSet(list1);
       list1.clear();
       list1.addAll(set);
    }

     for(String x: word){
        list2.add(x);
        HashSet set = new HashSet(list2);
            list2.clear();
            list2.addAll(set);
    }

   boolean first = true;
   pw.append("{");
    for(String x: list1){
        for(String y: list2){
            if(x.equalsIgnoreCase(y)){
                if(first){
                   first = false; 
                } else {
                    pw.append(",");
                }
              pw.append(list1.indexOf(x) + 39 +" "+ "1");
            }
        }       
    }
       pw.append("}");
       pw.append("\r\n");
       pw.flush();   
    }
     br.close();
     pw.close();

}

我的输出文件是这样的:

  1. {23 1,35 1,56 1,56 1,...}
  2. {2 1,4 1,7 1,...}

第一行一些数据重复,第二行所有数据按顺序排列,没有重复数据。我怎样才能删除那些重复的数据?我已经使用过 hashset,但是它没有用。

最佳答案

list1list2 中的项目正确地唯一,但区分大小写。因此,您可能在其中包含 manMan 之类的项目。但是在最后一个循环中,你使用了 x.equalsIgnoreCase(y),因为 "man".equalsIgnoreCase("man")"man".equalsIgnoreCase ("MAn") 都是真的,这就是重复出现的方式。

有几种方法可以解决这个问题:

  • 当您构建list1list2 时,将项目小写
  • 或者,使用 TreeSet 而不是 HashSet,并使用忽略大小写的比较器
  • x.equalsIgnoreCase(y) 更改为 x.equals(y)

关于java - 如何删除arraylist java中的重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23020328/

相关文章:

Java类图

Java ArrayList 字符串长度打印

java - 根据Class Attribute创建HashSet

java - 将键值对添加到 hashMap 时,为什么 Java 会更改 hashMaps 的 hashCode?

java - 在 JList 中显示 HashSet 并实时更新项目

Java ResourceBundles 变音搞砸了

java - 调整高 BufferedImage 大小时如何保持/偏爱某些像素值?

java - 仅使用 java 8 lambdas 将字符串的第一个字符转换为大写

java.lang.ClassCastException : List cannot be cast to java. lang.Comparable

android - 如何从纬度和经度按升序对距离进行排序