자바 집합 프레임 워 크 의 4 대 인터페이스, 상용 실현 클래스, 자바 기초 면접 필기시험 문제

43242 단어 자바
저 는 많은 인터넷 회사 의 면접 문제 와 답 을 정리 하고 이 를 통 해 문서 와 각종 학습 의 진급 학습 자금 인 63934 ℃ 를 정리 하여 여러분 에 게 무료 로 공유 합 니 다.QR 코드 를 스 캔 하거나 아래 그림 의 빨간색 VX 번 호 를 검색 하고 VX 친 구 를 추가 하여 [프로그래머 면접 학습 교류 군] 에 끌 어 들 여 무료 로 수령 합 니 다.여러분 이 함께 단체 에서 기술 을 탐구 하 는 것 도 환영 합 니 다.추천 글: 자바 면접 지식 분석;Mysql 최적화 기법 (데이터베이스 디자인, 명명 규범, 색인 최적화
 
자바 집합 프레임 워 크
 
Collection: 무질서 하고 유일한 데 이 터 를 저장 합 니 다. 그 아래 에 List 와 Set 두 개의 인터페이스 가 있 습 니 다.
List: 질서 있 고 유일한 데 이 터 를 저장 합 니 다.
set: 무질서 하고 유일한 데 이 터 를 저장 합 니 다.
Map: 키 값 쌍 의 형식 으로 데 이 터 를 저장 하고 키 로 값 을 추출 합 니 다. 키 는 중복 할 수 없 지만 값 은 중복 할 수 있 습 니 다.
인터페이스의 상용 실현 클래스: ArrayList, LinkedList, Vector, HashSet, LinkedHashSet, TreeSet, HashMap, LinkedHashMap, TreeMap, HashTable
1. List 인터페이스
컬 렉 션 인 터 페 이 스 를 계승 하 는 질서 있 는 집합 입 니 다. 현재 자주 사용 되 는 구현 클래스 는 ArrayList, LinkedList, Vector 입 니 다.
1. 상용 방법:
add (): 목록 의 마지막 에 요 소 를 추가 합 니 다.
add (index, obj): 목록 의 지정 한 위치 에 요 소 를 추가 합 니 다.
size (): 현재 목록 의 요소 개 수 를 되 돌려 줍 니 다.
get (int index): 아래 index 로 표 시 된 요 소 를 되 돌려 줍 니 다.
clear (): 목록 의 모든 요 소 를 삭제 합 니 다.
isEmpty (): 목록 이 비어 있 는 지 확인 하고 true / false 로 돌아 갑 니 다.
contains (): 대상 을 입력 하고 목록 에 대상 이 있 는 지 확인 합 니 다.
index Of (): 대상 을 입력 하고 목록 에 처음 나타 난 주 소 를 되 돌려 줍 니 다.
lastInsevOf (): 대상 을 입력 하고 목록 에 마지막 으로 나타 난 주 소 를 되 돌려 줍 니 다.
reove (): 아래 표 시 를 입력 하거나 대상 을 입력 하여 지정 한 요 소 를 삭제 합 니 다. 지정 한 대상 을 삭제 하려 면 equals () 방법 을 다시 써 야 합 니 다. 들 어 오 는 대상 이 원래 목록 에 속 하 는 지, 속 하면 결 과 는 true 로 돌아 갑 니 다.
set (index, obj): 새로 들 어 온 대상 으로 지정 한 위치의 요 소 를 교체 하고 교체 되 기 전의 요소 대상 을 되 돌려 줍 니 다.
subList (): 하위 목록 을 캡 처 하여 List 형식 으로 되 돌려 줍 니 다.
toArray (): 목록 을 배열 로 바 꾸 고 Object [] 형식 으로 되 돌려 줍 니 다.
iterator (): 교체 기 를 사용 하여 옮 겨 다 닙 니 다.
2. List 목록 을 어떻게 출력 합 니까?
a. for 순환;
b. foreach 옮 겨 다 니 기 (자주 사용);
c. 교체 기 를 사용 하여 목록 을 옮 겨 다 니 기;
3. List 인터페이스의 상용 실현 클래스:
ArrayList 와 LinkedList 실현 류 는 List 인 터 페 이 스 를 계승 하기 때문에 List 의 일반적인 방법 도 적용 된다.
a. ArrayList
Array List 는 길이 가 변 하 는 배열 을 실현 하여 메모리 공간 에서 연속 적 인 공간 을 열 었 다.
b. LinkedList
링크 드 리스트 는 링크 구조 로 데 이 터 를 저장 하고 요 소 를 삽입 하고 삭제 하 는 속도 가 매우 빠르다.
 
 1 //ArrayList   

 2 ArrayList list1=new ArrayList();

 3 list1.add("     ");  

 4 list1.add("     ");

 5 list1.add("     ");

 6 list1.add("     ");

 7 list1.add("     ");

 8 list1.add("     ");

 9 list1.add(2,"     ");  //         “     ”

10 

11 System.out.println(list1.size()); //      

12 System.out.println(list1.get(2));  //  “     ”

13 //list1.clear(); //      

14 System.out.println(list1.isEmpty()); //  false

15 System.out.println(list1.contains("     "));  //  true

16 System.out.println(list1.indexOf("     "));  //  3

17 System.out.println(list1.lastIndexOf("     "));   //  6

18 System.out.println(list1.remove(1));  //  “     ”

19 System.out.println(list1.set(0, "       "));  //       

20 List list=list1.subList(2, 5);  //          ,  List

21 System.out.println(list1.toString());  //    

22         

23 //LinkedList   

24 LinkedList list2=new LinkedList();

25 list2.add(new News(1,"xxxxxxx"," "));

26 list2.add(new News(2,"sssssss"," "));

27 list2.add(new News(3,"yyyyyyy"," "));

28 list2.add(new News(4,"nnnnnnn"," "));

29 list2.add(new News(5,"rrrrrrr"," "));

30 System.out.println(list2.contains(new News(3,"yyyyyyy"," ")));  //   true;  equals()  ;     equals()  ,   false;

31 System.out.println(list2.remove(new News(1,"xxxxxxx"," ")));  //   true

32         

33                 /*

34          *   for    

35          */

36         for (int i = 0; i < list1.size(); i++) {

37             if(list1.get(i) instanceof String){  //           String  

38                 String str=list1.get(i);

39                 System.out.println(str);

40             }

41         }

42         /*

43          * foreach  

44          */

45         for (News news : list2) {

46             System.out.println(news.getId()+"   "+news.getTitle()+"	"+news.getAuthor());

47         }

48         /*

49          *      

50          */

51         Iterator iter=list.iterator();

52         while(iter.hasNext()){ //  list      

53             String s=iter.next();  //        

54             System.out.println(s);

55         }        

56                     

 
 
 1 /**

 2  *News 

 3  */

 4 class News{

 5     private int id;

 6     private String title;

 7     private String author;

 8 

 9     @Override

10     public boolean equals(Object obj) {

11         if (this == obj)

12             return true;

13         if (obj == null)

14             return false;

15         if (getClass() != obj.getClass())

16             return false;

17         News other = (News) obj;

18         if (author == null) {

19             if (other.author != null)

20                 return false;

21         } else if (!author.equals(other.author))

22             return false;

23         if (id != other.id)

24             return false;

25         if (title == null) {

26             if (other.title != null)

27                 return false;

28         } else if (!title.equals(other.title))

29             return false;

30         return true;

31     }

32     public News() {

33         super();

34     }

35     public News(int id, String title, String author) {

36         super();

37         this.id = id;

38         this.title = title;

39         this.author = author;

40     }

41     public int getId() {

42         return id;

43     }

44     public void setId(int id) {

45         this.id = id;

46     }

47     public String getTitle() {

48         return title;

49     }

50     public void setTitle(String title) {

51         this.title = title;

52     }

53     public String getAuthor() {

54         return author;

55     }

56     public void setAuthor(String author) {

57         this.author = author;

58     }

59     

60     

61 }

 
2. Set 인터페이스
1. 상용 방법:
List 인터페이스 와 기본적으로 같 습 니 다. 그러나 Set 인터페이스 에 있 는 요 소 는 무질서 하기 때문에 아래 표 시 된 방법 이 없습니다. 예 를 들 어 get (index), remove (index), add (index, obj)
2. Set 인터페이스의 현재 상용 실현 클래스 는 다음 과 같 습 니 다.
HashSet、LinkedHashSet、TreeSet
3. HashSet
바 텀 은 HashMap 의 관련 방법 으로 데 이 터 를 전송 한 후 데이터 의 hashCode 에 따라 해시 연산 을 하고 해시 값 을 얻 은 후에 연산 을 하여 요소 가 시퀀스 에 저 장 된 위 치 를 확인한다.
따라서 HashSet 저장 데 이 터 를 사용 하려 면 실체 클래스 에서 hashCode 와 equals 방법 을 다시 써 야 합 니 다!!
 
 1     //HashSet   

 2     Set set1=new HashSet();

 3     set1.add("set1");

 4     set1.add("set2");

 5     set1.add("set3");

 6     set1.add("set4");

 7     set1.add("set5");

 8 

 9     //foreach  

10     for (String set : set1) {

11         System.out.println(set);

12     }

13       

 
4. LinkedHashSet
HashSet 을 바탕 으로 링크 가 추가 되 었 습 니 다. HashSet 요소 가 들 어 가 는 순 서 를 링크 로 기록 합 니 다. HashSet 은 여전히 무질서 하지만 링크 는 저 장 된 순서대로 저 장 됩 니 다.
 
 1     //LinkedHashSet         

 2     Set set2=new LinkedHashSet();

 3 //  set2.addAll(set1);  //  set1     

 4     set2.add(new Person(1," "));

 5     set2.add(new Person(2," "));

 6     set2.add(new Person(3," "));

 7     set2.add(new Person(4," "));

 8     set2.add(new Person(4," "));    

 9 

10     //     

11     Iterator iter=set2.iterator();

12     while(iter.hasNext()){

13         Person p=iter.next();

14         System.out.println(p.getId()+"	"+p.getName());

15     }

16 

17 class Person{

18     private int id;

19     private String name;

20     

21     /*

22      *      hashCode equals  ,            

23      *

24      */

25     @Override

26     public int hashCode() {

27         final int prime = 31;

28         int result = 1;

29         result = prime * result + id;

30         result = prime * result + ((name == null) ? 0 : name.hashCode());

31         return result;

32     }

33     @Override

34     public boolean equals(Object obj) {

35         if (this == obj)

36             return true;

37         if (obj == null)

38             return false;

39         if (getClass() != obj.getClass())

40             return false;

41         Person other = (Person) obj;

42         if (id != other.id)

43             return false;

44         if (name == null) {

45             if (other.name != null)

46                 return false;

47         } else if (!name.equals(other.name))

48             return false;

49         return true;

50     }

51     public Person() {

52         super();

53     }

54     public Person(int id, String name) {

55         super();

56         this.id = id;

57         this.name = name;

58     }

59     public int getId() {

60         return id;

61     }

62     public void setId(int id) {

63         this.id = id;

64     }

65     public String getName() {

66         return name;

67     }

68     public void setName(String name) {

69         this.name = name;

70     }

71     

72 }

 
5. TreeSet
저 장 된 데 이 터 를 정렬 한 다음 출력 합 니 다.
만약 에 들 어 오 는 것 이 실체 대상 이 라면 비교 기: 실체 류 가 Comparable 인 터 페 이 스 를 실현 하고 CompareTo 방법 을 다시 써 야 합 니 다.
 
 1     //TreeSet      。    ,      ;      ,       

 2     Set set3=new TreeSet();

 3     set3.add(new Person(11,"a"));

 4     set3.add(new Person(22,"b"));

 5     set3.add(new Person(33,"c"));

 6     set3.add(new Person(44,"d"));

 7 

 8     //     

 9     Iterator iter=set3.iterator();

10     while(iter.hasNext()){

11         Person p=iter.next();

12         System.out.println(p.getId()+"	"+p.getName());

13     }

14 

15 class Person implements Comparable{  //  

16     private int id;

17     private String name;

18     

19     //compareTo              

20     @Override

21     public int compareTo(Object o) {

22         Person p=null;

23         if(o instanceof Person){

24             p=(Person)o;

25         }else{

26             return 0;

27         }

28         return this.id -p.getId();  //   ,  ;   ,  ;  0,    

29     }

30     

31     public Person() {

32         super();

33     }

34     public Person(int id, String name) {

35         super();

36         this.id = id;

37         this.name = name;

38     }

39     public int getId() {

40         return id;

41     }

42     public void setId(int id) {

43         this.id = id;

44     }

45     public String getName() {

46         return name;

47     }

48     public void setName(String name) {

49         this.name = name;

50     }

51     

52     

53 }

 
3. 맵 인터페이스
1. Map 인터페이스의 특징:
키 값 이 맞 는 형식 으로 데 이 터 를 저장 하고 키 로 값 을 추출 합 니 다. 키 는 중복 할 수 없고 값 은 중복 할 수 있 습 니 다.
2. Map 인터페이스의 현재 상용 실현 유형 은 다음 과 같다.
HashMap、HashTable、LinkedHashMap、TreeMap
3. 상용 방법:
put (key, value): Map 의 마지막 키 쌍 을 추가 합 니 다.
get (key): 키 를 통 해 값 을 가 져 옵 니 다.
clear (): 맵 의 모든 데 이 터 를 삭제 합 니 다.
contains Key (key): 지정 한 키 가 포함 되 어 있 는 지 확인 합 니 다.
contains Value (obj): 지정 한 값 이 포함 되 어 있 는 지 확인 합 니 다.
replace (): 지정 한 키 의 값 을 바 꿉 니 다.
4. 지 도 를 편력 한다
a. keyset (): Set 을 되 돌려 주 고 키 를 먼저 취하 고 값 을 가 져 옵 니 다.
b. values (): Collection 을 되 돌려 주 고 직접 값 을 가 져 옵 니 다.
c. entry 키 값 대신 Set > 로 돌아 가기;
 
 1         Map map1=new HashMap();

 2         map1.put("01", "aaaaaa");

 3         map1.put("02", "bbbbbb");

 4         map1.put("03", "cccccc");

 5         map1.put("04", "dddddd");

 6 //        map1.clear();  //      

 7         System.out.println(map1.containsKey("01"));  //  true

 8         System.out.println(map1.containsValue("aaaa"));  //  false

 9         System.out.println(map1.replace("03", "dddddd"));  // cccccc   dddddd

10         System.out.println(map1.get("02"));  //  bbbbbb

11         

12         /**

13          *   Map    ,   ,   

14          */

15         Set keys=map1.keySet();  //     

16         Iterator iter=keys.iterator();

17         while(iter.hasNext()){ //           

18             String key=iter.next();

19             System.out.println(key+"  "+map1.get(key)); //key:       map1.get(key):         

20         }

21         

22         /**

23          *   Map    ,    ;     

24          */

25         Collection values = map1.values();

26         Iterator iter1= values.iterator();

27         while(iter1.hasNext()){

28             System.out.println(iter1.next());

29         }

30         

31         /**

32          *   Map    ,    entry   

33          */

34         Set> set= map1.entrySet();

35         Iterator> iter2=set.iterator();

36         while(iter2.hasNext()){

37             Entry entry=iter2.next();

38             System.out.println(entry.getKey()+"  "+entry.getValue());

39         }

40         

 
5. LinkedHashMap
목록 을 사용 하여 데 이 터 를 넣 는 순 서 를 기록 할 수 있 습 니 다. 출력 순 서 는 넣 는 순서 와 일치 합 니 다. LinkedHashSet 과 같 습 니 다.
6. TreeMap
키 의 순서에 따라 정렬 하여 출력 합 니 다. TreeSet 과.
실체 대상 이 들 어 오 면 비교 함 수 를 다시 써 야 합 니 다.
7. HashMap 과 HashTable 의 차이 점 은?
a. HashTable 은 스 레 드 가 안전 하고 HashMap 은 스 레 드 가 안전 하지 않 습 니 다.
b. HashTable 의 키 는 null 일 수 없고 HashMap 의 키 는 null 일 수 있 습 니 다.
c. HashTable 은 Dirctionary 사전 류, HashMap 은 abstract 류 를 계승 합 니 다.
d. 확장 크기: HashTable 두 배, HashMap 두 배 에 1 추가;
e. 초기 용량: HashTable 은 11 이 고 HashMap 은 16 이 며 이들 의 충전 인 자 는 기본적으로 0.75 이다.
 
전송:https://www.cnblogs.com/yanglianwei/p/8847861.html 추천 내용: 2018 년 자바 생태 산업 보고서 자바 지연 대기 열 사용 JAVA 다 중 스 레 드 와 동시 기초 면접 문답 JAVA 구현 사용자 권한 관리 JAVA 면접 문제 자바 고급 개발 면접 총화 자바 면접 통관 요점 취 합 JAVA 엔지니어 면접 문제 집 자바 면접: 투자 은행 의 15 개 다 중 스 레 드 와 동시 면접 문제자바 면접 - 문제 역 추적

좋은 웹페이지 즐겨찾기