난 정 집 세 필 시험 문제: 링크 드 리스트 목록 에서 중복 요 소 를 가장 좋 은 방법 으로 삭제 합 니 다.

실행 속도 가 가장 좋 은 방법 으로 링크 드 리스트 목록 에서 중 복 된 요 소 를 삭제 합 니 다. 예 를 들 어 A - > B - > B - > C, A - > B - > B - > C 를 되 돌려 줍 니 다.
시험 을 볼 때 완전히 이해 하지 못 하고 시험 을 보고 또 생각 했 지만 사실은 매우 간단 했다.사고방식 은 매우 간단 하 다. 하나의 Set 를 이용 하여 LinkedList 에 저 장 된 요 소 를 저장 하고 교체 하 는 과정 에서 현재 요소 가 Set 에 나 타 났 는 지 판단 하고 나 타 났 으 면 삭제한다. 즉, 우리 가 옮 겨 다 니 는 과정 에서 삭제 작업 을 하기 때문에 여 기 는 ListIterator 를 사용 해 야 하 며 일반적인 Iterator 를 사용 해 서 는 안 된다.
코드 는 다음 과 같 습 니 다:
private static LinkedList removeDuplicatedElements(LinkedList list) {
	HashSet set = new HashSet();
	Iterator iter = list.listIterator();
	while(iter.hasNext()){
		String str = (String)iter.next();
		if(!set.contains(str))
			set.add(str);
		else
			iter.remove();
	}
	return list;
}

좋은 웹페이지 즐겨찾기