List<Integer> items = new ArrayList<Integer>();
items.add(1);
items.add(2);
items.add(1);
items.add(2);
items.add(3);
items.add(3);
System.out.println(items); // [1, 2, 1, 2, 3, 3]
List<Integer> uniqueItems = new ArrayList<Integer>(new HashSet<Integer>(items));
System.out.println(uniqueItems); // [1, 2, 3]
중복되는 요소들을 가질 리스트를 HashSet으로만든뒤에 다시 List로 변환을 하면 중복요소가 사라진 유일한 요소들만 가진 리스트를 만들 수 있습니다.
덧) 저의 경우에는 필요치 않았지만 HashSet을 사용할 경우 순서가 지켜지지 않을 수 있다는 얘기가 있었습니다.
덧2) 김은석님이 List의 contains와의 성능비교를 공유해 주셨습니다.
public OVERLAP _OVERLAP = (Queue<List<int>> MC) =>
{
HashSet<List<int>> overlap = new HashSet<List<int>>(MC);
List<List<int>> _cs = new List<List<int>>(overlap);
for(int num =0; num < _cs.Count; num++)
{
for (int i = 0; i < 5; i++)
Console.Write("{0} ", _cs[i][num]);
Console.WriteLine();
}
};
Queue<List<int>> MC 안에 9500개의 큐가 있는데 한큐 마다 5개의 배열이 있습니다.
거기에 큐마다 중복된 데이터가 많아서 제거 할라고 저런 코드를 썻는데 잘 안됩니다.
어떻게 해야하나요?
선교사 식인종 알고리즘 으로 인한 가지치기 중입니다.