リストから重複データを削除する5つの方法

序文

多くの場合、リスト内のデータの重複を排除する必要があります。以下では、リスト内の重複データを削除する5つの方法を紹介します。

1. LinkedHashSetを使用して、arraylist内の重複データを削除します

LinkedHashSetは、ArrayList内の重複データを削除するための最良の方法です。LinkedHashSetは、内部で2つのことを実行します。

1.重複データを削除します

2.追加されたデータの順序を維持します

LinkedHashSetを使用して、配列リスト内の重複を削除します。与えられた例では、numbersListは整数を含む配列リストであり、その一部は繰り返される数値です。

たとえば、1、3、5です。リストをLinkedHashSetに追加してから、コンテンツをリストに返します。結果のarraylistには、繰り返される整数はありません。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
 
public class ArrayListExample
 
{
    
    
    public static void main(String[] args)
 
    {
    
    
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
 
        System.out.println(numbersList);
 
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
 
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}

出力結果

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
 
[1, 2, 3, 4, 5, 6, 7, 8]

2.リストの重複排除にjava8の新機能ストリームを使用します

配列リストから重複を削除するには、java8ストリームAPIを使用することもできます。Steamのdistinct()メソッドを使用して、異なるデータで構成されるストリームを返します。これは、オブジェクトのequals()メソッドによって比較されます。

Collectors.toList()を使用して、すべてのエリアデータリストを収集します。

Setを使用せずにJavaの配列リストから重複アイテムを削除するために使用されます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class ArrayListExample
{
    
    
    public static void main(String[] args)
 
    {
    
    
 
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
 
        System.out.println(listWithoutDuplicates);
 
    }
 
}


出力結果

[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
 
[1, 2, 3, 4, 5, 6, 7, 8]

3.利用HashSet

重複データを追加できないHashSetの機能を使用してください。HashSetは追加の順序を保証できないため、順序を保証するための判断条件としてのみ使用できます。

private static void removeDuplicate(List<String> list) {
    
    
    HashSet<String> set = new HashSet<String>(list.size());
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
    
    
        if (set.add(str)) {
    
    
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

4.Listのcontainsメソッドを使用します

Listのcontainsメソッドを使用して、重複を避けるために、データを1回だけループ、並べ替え、追加します。

private static void removeDuplicate(List<String> list) {
    
    
    List<String> result = new ArrayList<String>(list.size());
    for (String str : list) {
    
    
        if (!result.contains(str)) {
    
    
            result.add(str);
        }
    }
    list.clear();
    list.addAll(result);
}

5.重複を削除するためにforループを2倍にする

for (int i = 0; i < list.size(); i++) {
    
     
   for (int j = 0; j < list.size(); j++) {
    
     
       if(i!=j&&list.get(i)==list.get(j)) {
    
     
       list.remove(list.get(j)); 
   } 
} 

おすすめ

転載: blog.csdn.net/qq_36551991/article/details/110009535