簡體   English   中英

如何在List中獲取唯一值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM