[英]How to get unique values in List
我有2个带有数据的文本文件。 我正在使用BufferReader
读取这些文件,并将每个文件的一列数据放在List<String>
。
我每个都有重复的数据,但我需要在第一个List
有唯一的数据来对抗第二个List
的重复数据。
如何从List
获取唯一值?
它可以通过使用中间Set
来完成一行:
List<String> list = new ArrayList<>(new HashSet<>(list));
在java 8中,在流上使用distinct()
:
List<String> list = list.stream().distinct().collect(Collectors.toList());
或者,根本不要使用List; 只需从集合的开头使用Set(如HashSet),您只想拥有唯一值。
将ArrayList
转换为HashSet
。
List<String> listWithDuplicates; // Your list containing duplicates
Set<String> setWithUniqueValues = new HashSet<>(listWithDuplicates);
如果由于某种原因,您希望之后将该组转换回列表,则可以,但很可能没有必要。
List<String> listWithUniqueValues = new ArrayList<>(setWithUniqueValues);
在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]
这也适用于对象,但您可能需要调整equals方法。
我只是意识到解决方案可能对其他人有帮助。 首先将使用BufferReader中的重复值填充。
ArrayList<String> first = new ArrayList<String>();
要提取唯一值,我只需创建一个新的ArrayList,如下:
ArrayList<String> otherList = new ArrayList<>();
for(String s : first) {
if(!otherList.contains(s))
otherList.add(s);
}
互联网上的很多帖子都在说我将Arraylist分配给List,Set,HashTable或TreeSet。 任何人都可以解释理论上的差异,并且在实践中是最好的用途吗? 为你的时间而努力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.