자바 집합 프레임 워 크 의 4 대 인터페이스, 상용 실현 클래스, 자바 기초 면접 필기시험 문제
43242 단어 자바
자바 집합 프레임 워 크
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 개 다 중 스 레 드 와 동시 면접 문제자바 면접 - 문제 역 추적
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.