Java 如何获取列表中的唯一值

Java 如何获取列表中的唯一值,java,list,unique-values,Java,List,Unique Values,我有两个文本文件的数据。我正在使用BufferReader读取这些文件,并将每个文件的一列数据放入列表中 我在每个列表中都有重复的数据,但我需要在第一个列表中有唯一的数据,以应对第二个列表中的重复数据 如何从列表中获取唯一值?将数组列表转换为 列出具有重复项的列表;//您的列表包含重复项 Set-setWithUniqueValues=新哈希集(listWithDuplicates); 如果出于某种原因,您希望以后将集合转换回列表,则可以,但很可能不需要 List<String>

我有两个文本文件的数据。我正在使用
BufferReader
读取这些文件,并将每个文件的一列数据放入
列表中

我在每个列表中都有重复的数据,但我需要在第一个
列表中有唯一的数据
,以应对第二个
列表中的重复数据


如何从
列表中获取唯一值?

数组列表转换为

列出具有重复项的列表;//您的列表包含重复项
Set-setWithUniqueValues=新哈希集(listWithDuplicates);
如果出于某种原因,您希望以后将集合转换回列表,则可以,但很可能不需要

List<String> listWithUniqueValues = new ArrayList<>(setWithUniqueValues);
List listWithUniqueValues=new ArrayList(setWithUniqueValues);

我刚刚意识到一个解决方案可能对其他人有帮助。 第一个将由来自BufferReader的重复值填充

ArrayList<String> first = new ArrayList<String>();  
ArrayList first=new ArrayList();
要提取唯一值,我只需创建一个新的ArrayList,如down:

ArrayList<String> otherList = new ArrayList<>();

    for(String s : first) {
        if(!otherList.contains(s))
            otherList.add(s);
    }
ArrayList otherList=新建ArrayList();
for(字符串s:第一个){
如果(!otherList.contains))
其他列表。添加(s);
}
互联网上的许多帖子都在谈论将我的Arraylist分配给列表、集合、哈希表或树集。 有人能从理论上解释这种差异吗?在实践中,哪一个是最好的?
这是给你的时间伙计们的。

这可以通过使用中间
集合来完成一行:

List<String> list = new ArrayList<>(new HashSet<>(list));

或者,根本不使用列表;只需从一开始就为只希望保存唯一值的集合使用一个集合(如HashSet)。

在Java 8中:

     // List with duplicates
     List<String> listAll = Arrays.asList("A", "A", "B", "C", "D", "D");

     // filter the distinct 
     List<String> distinctList = listAll.stream()
                     .distinct()
                     .collect(Collectors.toList());

    System.out.println(distinctList);// prints out: [A, B, C, D]
//包含重复项的列表
listAll=Arrays.asList(“A”、“A”、“B”、“C”、“D”、“D”);
//过滤不同的
List distinctList=listAll.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctList);//打印出:[A、B、C、D]

这也适用于对象,但您可能必须调整equals方法。

如果列表已经包含()
it,请不要添加重复的值。这需要您回答很多问题。Java API文档为每个集合类和接口提供了详细的文档。还提供了有关其他集合类型的概述和指向页面的链接。我想您的意思是:
list.stream().distinct().collect(Collectors.toList())@MoGa我很年轻,很傻,很爱她。谁能为这种愚蠢行为责备我?(谢谢-代码更正)哈哈,你的代码实际上为我指明了正确的方向;)干杯
List<String> list = list.stream().distinct().collect(Collectors.toList());
     // List with duplicates
     List<String> listAll = Arrays.asList("A", "A", "B", "C", "D", "D");

     // filter the distinct 
     List<String> distinctList = listAll.stream()
                     .distinct()
                     .collect(Collectors.toList());

    System.out.println(distinctList);// prints out: [A, B, C, D]