HashSet 과 TreeSet HashMap 및 TreeMap 에 대한 소개
HashSet
특징: HashSet 바 텀 데이터 구 조 는 해시 표 입 니 다. HashSet 는 스 레 드 안전 한 집합 요소 가 아니 라 null 해시 표 일 수 있 습 니 다. 하나의 요소 가 링크 인 배열 로 배열 과 링크 의 장점 을 종합 하 였 습 니 다.
데 이 터 를 저장 하 는 과정: HashSet 집합 에 요 소 를 저장 할 때 HashSet 은 대상 의 hashCode () 방법 을 호출 하여 대상 의 hashCode 값 을 얻 은 다음 hashCode 값 에 따라 대상 이 HashSet 에 저장 되 는 위 치 를 결정 합 니 다.(HashSet 보증 요소 의 유일 성 은 요소 재 작성 hashCode () 와 equals () 방법 으로 보장 되 며, 재 작성 하지 않 으 면 보장 할 수 없습니다.)
public class Text1 {
public static void main(String[] args) {
HashSet list = new HashSet<>();
list.add(new Student("zhangsan", 19));// add
list.add(new Student("zhangsan", 19));
list.add(new Student("lisi", 20));
list.add(new Student("wangwu", 22));
for (Student student : list) {//
student.show();
}
}
}
//
TreeSet
특징: 사용자 정의 대상 을 저장 하고 요소 의 유일 성 을 확보 합 니 다.만약 두 대상 의 구성원 변수 가 모두 같다 면 우 리 는 같은 대상 이 라 고 생각 합 니 다. 일반적인 질서 있 는 실현 은 우리 가 그의 자연 정렬 이나 비교 기 정렬 을 실현 해 야 합 니 다.
자연 정렬
TreeSet , ,
Comparable
compareTo 0
@Override
public int compareTo(Student o) {
int num=this.getAge()-o.getAge();
int num2=num==0?this.getName().compareTo(o.getName()):num;
return num2;
}
Comparable , compareto
비교 기 정렬
TreeSet
TreeSet , 、
public class Text2 {
//3、 , TreeSet ,
public static void main(String[] args) {
TreeSet treeSet = new TreeSet<>(new Comparator() {
@Override
public int compare(Student o1, Student o2) {
int num=o1.getAge()-o2.getAge();
int num2=num==0?o1.getName().compareTo(o2.getName()):num;
return num2;
}
});
treeSet.add(new Student("zhangsan", 19));
treeSet.add(new Student("zhangsan", 19));
treeSet.add(new Student("lisi", 20));
treeSet.add(new Student("wangwu", 22));
for (Student student : treeSet) {
System.out.println(student);
}
}
}
HashMap 과 TreeMap 을 이야기 하기 전에 저희 가 먼저 지 도 를 알 아 보도 록 하 겠 습 니 다.
Map 의 소개: 키 값 과 저 장 된 데이터 두 부분 으로 구성 되 어 있 습 니 다.
Map 인터페이스 와 Collection 인터페이스의 차이: Map 은 2 열 이 고 Collection 은 1 열 Map 의 키 가 유일 하 며 Collection 의 서브 시스템 set 는 유일한 Map 집합 데이터 구 조 는 키 에 유효 하 며 값 과 무관 합 니 다.Collection 집합 데이터 구 조 는 요소 에 유효 합 니 다.
방법 소개:
a:
V put(K key,V value): 。 ?
, , null
, ,
b:
void clear():
V remove(Object key): ,
c:
boolean containsKey(Object key):
boolean containsValue(Object value):
boolean isEmpty():
d:
Set> entrySet(): Set
V get(Object key):
Set keySet():
Collection values():
e:
int size():
HashMap
HashMap 의 소개: 키 값 에 대한 유일한 판단 을 위해 hashCode 방법 과 equals 방법 을 다시 써 야 합 니 다.
HashMap 과 Hashtable 의 차이 점:
HashMap Hashtable : API
HashMap: , . null null
Hashtable: , . null null
public class MyTest {
public static void main(String[] args) {
HashMap map = new HashMap<>();
map.put(" ", " ");
map.put(" ", " ");
map.put(" ", " ");
Set keySet = map.keySet();//
for (String key : keySet) {// get
System.out.println(key+"=="+map.get(key));
}
}
}
다른 옮 겨 다 니 는 방식 은 entry set () 를 통 해 키 값 과 데 이 터 를 가 져 오 는 set 집합 입 니 다.
Set> entries = hashMap.entrySet();
for (Map.Entry entry : entries) {
System.out.println(entry.getKey()+"==="+entry.getValue());
}
TreeMap
Treemap 의 소개: 키 의 데이터 구 조 는 빨간색 과 검은색 트 리 로 키 의 정렬 과 유일 성 을 확보 할 수 있 습 니 다. (TreeMap 키 는 null 삽입 을 허용 하지 않 습 니 다) 정렬 은 자연 정렬 과 비교 기 정렬 스 레 드 로 나 뉘 어 안전 하지 않 은 효율 이 높 습 니 다.
우 리 는 TreeMap 의 특성 을 이용 하여 우리 의 수 요 를 실현 할 수 있 습 니 다. 예 를 들 어 데 이 터 를 저장 한 후에 우리 의 수요 에 따라 스스로 순 서 를 정할 수 있 습 니 다.
예제: 학생 대상 을 키 로 삼 아 학생 의 나이 에 따라 어 릴 때 부터 어른 까지 정렬 합 니 다.
public class MyTest6 {
public static void main(String[] args) {
//Map ,
TreeMap treeMap = new TreeMap<>(new Comparator() {
@Override
public int compare(Student s1, Student s2) {
int i = s1.getAge() - s2.getAge();
int j=i==0?s1.getName().compareTo(s2.getName()):i;
return j;
}
});
treeMap.put(new Student("zhangsan",1),1);
treeMap.put(new Student("zhangsan", 10), 1);
treeMap.put(new Student("zhangsan", 12), 1);
treeMap.put(new Student("zhangsan", 122), 1);
treeMap.put(new Student("zhangsan", 144), 1);
treeMap.put(new Student("zhangsan", 109), 1);
treeMap.put(new Student("zhangsan", 156), 1);
treeMap.put(new Student("zhangsan", 124), 1);
treeMap.put(new Student("zhangsan", 124), 1);
Set> entries = treeMap.entrySet();
for (Map.Entry en : entries) {
Student key = en.getKey();
Integer value = en.getValue();
System.out.println(key.getName()+"=="+key.getAge()+"======="+value);
}
}
}
집합 세트: 기초 반 장 삼 20 이사 22 취업 반 왕 오 21 조 육 23 은 HashMap 세트 를 이용 하여 이름 을 키 나이 로 데이터 로 저장 합 니 다.
외부 학급 은 키 값 으로 학생 을 저장 값 으로 한다.
public static void main(String[] args) {
HashMap studentHashMap = new HashMap<>();
studentHashMap.put(" ",20);
studentHashMap.put(" ",22);
HashMap student1HashMap = new HashMap<>();
student1HashMap.put(" ",21);
student1HashMap.put(" ",23);
HashMap> stringHashMapHashMap = new HashMap<>();
stringHashMapHashMap.put(" ",studentHashMap);
stringHashMapHashMap.put(" ",student1HashMap);
Set>> entries = stringHashMapHashMap.entrySet();
for (Map.Entry> entry : entries) {
System.out.println(entry.getKey());
HashMap value = entry.getValue();
Set> entries1 = value.entrySet();
for (Map.Entry stringIntegerEntry : entries1) {
System.out.println("\t"+stringIntegerEntry.getKey()+" "+stringIntegerEntry.getValue());
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.