초보 자 자바-맵
Map 은 키(key)에 따라 요 소 를 저장 하 는 용기 입 니 다.키(key)는 아래 표 시 를 닮 았 고 List 에서 아래 표 시 는 정수 입 니 다.맵 에서 키(key)를 누 르 면 임의의 유형의 대상 을 만 들 수 있 습 니 다.맵 에 중복 되 는 키(Key)가 있 으 면 안 됩 니 다.키(key)마다 대응 하 는 값(value)이 있 습 니 다.
하나의 키(key)와 그 에 대응 하 는 값 은 맵 집합의 원 소 를 구성한다.
Map 의 요 소 는 두 개의 대상 이 고 한 대상 은 키 이 며 한 대상 은 값 입 니 다.키 는 중복 할 수 없 지만 값 은 중복 할 수 있 습 니 다.
꼭대기 층 의 공통성 방법 을 보고 자 류 특유 의 대상 을 찾다.
맵 과 Collection 은 집합 프레임 워 크 에 병렬 되 어 있 습 니 다.
Map 에 저 장 된 것 은 키 쌍 입 니 다.
Map 저장 요 소 는 put 방법 을 사용 하고 Collection 은 add 방법 을 사용 합 니 다.
Map 집합 은 원 소 를 직접 꺼 내 는 방법 이 아니 라 Set 집합 으로 전환 하여 반복 을 통 해 원 소 를 얻 습 니 다.
맵 집합 중 키 는 유일 성 을 확보 해 야 합 니 다.
컬 렉 션 은 일렬 집합 이 고 맵 은 2 열 집합 이다.
학습 체계
Map :
---| Map 。 ; 。
---| HashMap ,
---| TreeMap
---|Hashtable:
, , null ,null 。
, HashMap 。
---|HashMap:
, , null ,null 。
, hashCode , equals 。
---| LinkedHashMap:
。 Map 。
---|TreeMap:
。 map 。 Comparable Comparator 。return 0, 。
흔 한 방법
1、 :
1、V put(K key, V value) ( key , value
, , null)
2、putAll(Map<? extends K,? extends V> m)
( )。
2、
1、remove() , key
2、clear()
3、
1:value get(key); 。 ,
null。
3、 :
1、boolean isEmpty() 0 true false
2、boolean containsKey(Object key) key
3、boolean containsValue(Object value) value
4、 :
Int size()
맵 조작여기 사용
hashMap
삭제
import java.util.HashMap;
import java.util.Map;
public class Maps {
public static void main(String[] args){
Map<String,String> myMap=new HashMap<String,String>();
myMap.put("N0lan","tryup");
myMap.put("Cors","study");//add
System.out.println(myMap);
myMap.remove("N0lan");//delete
System.out.println(myMap.get("Cors"));//find
System.out.println(myMap.isEmpty());//panduan
System.out.println(myMap.containsKey("Hello"));//
}
}
맵 의 옮 겨 다 니 기
keyset 옮 겨 다 니 기
맵 을 set 집합(keyset()으로 바 꾸 고 set 의 교체 기 를 통 해 set 집합 에 있 는 모든 요소(Iterator)를 꺼 내 는 것 이 맵 집합 에 있 는 모든 키 이 고 get 방법 으로 키 에 대응 하 는 값 을 가 져 옵 니 다.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Maps {
public static void main(String[] args){
/* Map<String,String> myMap=new HashMap<String,String>();
myMap.put("N0lan","tryup");
myMap.put("Cors","study");//add
System.out.println(myMap);
myMap.remove("N0lan");//delete
System.out.println(myMap.get("Cors"));//find
System.out.println(myMap.isEmpty());//panduan
System.out.println(myMap.containsKey("Hello"));//*/
Bianli();
}
public static void Bianli(){
Map<String,String> myMap=new HashMap<String,String>();
myMap.put("N0lan","tryup");
myMap.put("III","tryups");
myMap.put("Cors","study");//add
//
// :
// : keySet
// key value,
// Set<K> keySet() key Set
Set<String> keyvaule= myMap.keySet();
Iterator<String> keys=keyvaule.iterator();
while(keys.hasNext()){
String key=keys.next();
String vaule=myMap.get(key);
System.out.println("key=" + key + " vaule=" + vaule);
}
}
}
두 번 째 방식:values 를 통 해 모든 값 을 가 져 옵 니 다.key 대상 을 가 져 올 수 없습니다.
세 번 째 방식:Map.Entry 옮 겨 다 니 기
대상 을 대상 으로 하 는 사상 은 map 집합 중의 키 와 값 맵 관 계 를 하나의 대상 으로 포장 합 니 다.바로 Map.Entry 입 니 다.이 대상 을 set 집합 에 저장 합 니 다.Map.Entry 는 하나의 대상 입 니 다.그러면 이 대상 이 갖 춘 getKey,getValue 는 키 와 값 을 얻 습 니 다.
public static void Entryt(){
Map<String,String> myMap=new HashMap<String,String>();
myMap.put("N0lan","tryup");
myMap.put("III","tryups");
myMap.put("Cors","study");//add
// Map.Entry Set Map.Entry key value
Set<Map.Entry<String,String>> ts= myMap.entrySet();
Iterator<Map.Entry<String,String>> all=ts.iterator();
while (all.hasNext()){
Map.Entry<String, String> allin = all.next();
System.out.println("key="+allin.getKey()+" value="+allin.getValue());
}
}
}
HashMap 사례 는 사용자 정의 대상 을 Map 의 key 로 사용 합 니 다.
import sun.invoke.empty.Empty;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class SelfClass {
public static void main(String[] args){
HashMap<Person,String> mymap=new HashMap<Person,String>();
mymap.put(new Person("N0lan",99),"boy");
mymap.put(new Person("zAD",99),"GIR");
Set<Map.Entry<Person,String>> duixiang=mymap.entrySet();
Iterator<Map.Entry<Person, String>> it = duixiang.iterator();
while(it.hasNext()){
Map.Entry<Person,String> next=it.next();
Person key= next.getKey();
String value = next.getValue();
System.out.println(key + " = " + value);
}
}
}
class Person{
private String name;
private int age;
Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public void Setname(String name){
this.name=name;
}
@Override
public int hashCode() {
return this.name.hashCode() + age * 37;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
} else {
return false;
}
}
@Override
public String toString() {
return "Person@name:" + this.name + " age:" + this.age;
}
}
TreeMap트 리 맵 의 정렬,트 리 맵 은 집합 키 를 정렬 할 수 있 습 니 다.어떻게 키 의 정렬 을 실현 합 니까?
방식 1:요소 자체 가 비교 성 을 가진다.
TreeSet 과 같은 원리 로 키 위치 에 저 장 된 대상 이 Comparable 인 터 페 이 스 를 실현 하고 compare To 방법 을 다시 써 야 한다.즉,요소 자체 가 비교 성 을 가지 도록 하 는 방식 을 요소 의 자연 정렬 이 라 고도 부 르 고 기본 정렬 이 라 고도 부른다.
방식 2:용기 비교 성
요소 자체 가 비교 성 을 가지 지 않 거나 자신 이 가 진 비교 성 은 필요 한 것 이 아니다.그렇다면 이 때 는 용기 자체 가 갖 출 수 있다.인터페이스 Comparator 를 실현 하고 compare 방법 을 다시 쓰 며 이 인터페이스의 하위 클래스 인 스 턴 스 대상 을 매개 변수 로 TreeMap 집합 에 전달 하 는 구조 방법 을 정의 해 야 합 니 다.
주의:Comparable 비교 방식 과 Comparator 비교 방식 이 동시에 존재 할 때 Comparator 의 비교 방식 을 위주 로 합 니 다.
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.