자바 - 배열 수집 일반적인 면접 질문

1. 중복 제거

목록의 중복 제거 :

방법 A : 루프 용 2 : 차륜 번호리스트 길이에 1을 뺀 수와 비교 외부 루프; 횟수 내부 루프는 비교의 각 라운드를 제어 비교 라운드 목록 개수를 뺀 전류 라운드의 길이

대해 INT (I = 0; I는 ()는 list.size를 <- 1; 내가 ++) {

    대 (INT는 list.size J = 1; J> I, J -) { 

경우 (List.get (j) .equals (List.get (I))) {

List.remove (j);

}}}

방법 II;

jdk1.8 구별 List.stream ()을 제공 한 후 ();

방법 세 가지 :

중량 요소들의 세트를 사용하여

순서화 세트 소자는, 소자가 반복 될 수 없다

HashSet의 집합 = HashSet의 새로운 (목록) // 만들기 HashSet의 동작이 다시 수행 된 경우의리스트 요소들을 사용하여 설정

이 list.clear은 (); // 원래 목록을 지우

에는 list.add (세트); //의 요소 목록에 다시 참여 드는-중복

 

중복 제거 어레이 :

방법 1

와 목록 모음 구현

INT [] STR = {5,6,6,8,8,7,4};

목록 <정수> 목록 = 새로운 ArrayList를 <정수> ();

대해 INT (I = 0; I <str.length; 내가 ++) {
경우 (list.contains (STR [I])!);

에는 list.add (STR [I]);

}

}

에서 System.out.println (리스트);

방법 2 :

용 HashSet :

설정 설정 = 새 HashSet의 ();

대해 INT (I = 0; I)는 (a.length를 <; 내가 ++) {

set.add (a [I]);

}

2. 교차

교차 목록

listA.retainAll (listB)

배열 교차

문자열 [] = result_insect 교차 (arr1, arr2); 

(3) 두 개의 배열을 설정하고

listA.removeAll (listB) 처음 두 세트 사이의 차이를 고려 //는, 즉 공통 부분을 제거 챠트

listA.addAll (listB)의 후 ListB의 챠트의 나머지 부분에 추가

문자열 [] = result_union 연합 (arr1, arr2);

또한 사용에 두 개의 배열을 통과, HashSet에 설정할 수 있습니다

 

교차로 : 어레이 소자 (2)는,이 요소는 새로운 배열에 추가되면 linkList 포함 된 어레이 (2)를 통해 내부로 그리고 제 linkList 어레이.

 

요약 :

1 세트 재사용

빠른 ArrayList에 비해 삽입 2.linklist

 

추천

출처www.cnblogs.com/testerling/p/11784807.html