본문 바로가기

logs

java] arraylist에 중복 row 제거하기


 List<String> 결과List   = new ArrayList<String>(new LinkedHashSet<String>(돌릴List));







HashSet은 중복된 애를 넣으려고 하면 이미 있으니까 더 안들어감


LinkedHashSet 과 HashSet의 차이점은 LinkedHashSet은 데이터를 넣은 순서가 보장된다는 것.



==> LinkedHashSet에
1 2 3 4 5 1 6 을 넣으면

1 2 3 4 5 6 으로 출력되며


HashSet은 1 2 3 4 5 6이 출력되지만 출력되는 순서는 보장되지 않음!




다른 방법 (속도 보장 못함)

List<String> deduped = list.stream().distinct().collect(Collectors.toList());



정렬은 .sort()













또 다른 방법


출처 : https://www.dotnetperls.com/duplicates-java


import java.util.ArrayList;
import java.util.HashSet;

public class Program {

    static ArrayList<String> removeDuplicates(ArrayList<String> list) {

        // Store unique items in result.
        ArrayList<String> result = new ArrayList<>();

        // Record encountered Strings in HashSet.
        HashSet<String> set = new HashSet<>();

        // Loop over argument list.
        for (String item : list) {

            // If String is not in set, add it to the list and the set.
            if (!set.contains(item)) {
                result.add(item);
                set.add(item);
            }
        }
        return result;
    }

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("dog");
        list.add("cat");
        list.add("dog");
        list.add("dog");
        list.add("cat");
        list.add("bird");

        // Remove duplicates from ArrayList of Strings.
        ArrayList<String> unique = removeDuplicates(list);
        for (String element : unique) {
            System.out.println(element);
        }
    }
}





여기도 봐바. 리스트가 12개짜리지만...

http://selfinvestfriends.tistory.com/22

반응형