이 기사에서는 Map 인터페이스의 사용과 Map 인터페이스 저장 특성, 공통 구현 클래스, 생성 방법, 공통 방법 등 인터뷰 지식 포인트에 대한 관련 질문을 주로 구성하는 java에 대한 관련 지식을 제공합니다. 아래 내용이 모든 분들께 도움이 되었으면 좋겠습니다.
추천 학습: "java 비디오 튜토리얼"
키(키) 값(값) 쌍의 형태로 저장됩니다
키는 순서가 없고 순서도 없습니다. 첨자, 요소는 반복될 수 없습니다
값은 순서가 없으며, 첨자 없음, 요소는 반복될 수 있습니다
HashMap
LinkedHashMap
TreeMap
HashTable
Properties
Map< 컬렉션 이름=새 구현 클래스 이름<키의 제네릭, 값의 제네릭>();
Map<键的泛型,值的泛型> 集合名=new 实现类名<键的泛型,值的泛型>();
tips:一个键值对才是一个元素
值 put(键,值)
:将一个键值对添加至集合末尾
void clear()
:清空集合元素
boolean containsKey(键)
:判断集合中是否存在某个键
boolean containsValue(值)
:判断集合中是否存在某个值
值 get(键)
:获取键对应的值
boolean isEmpty()
:判断集合内容是否为空,不能判比null值
void putAll(Map的集合名)
:将指定Map集合的内容添加至当前集合末尾
值 remove(键)
:移除键所对应的键值对
int size()
공통 메서드
Value put(key, value): 컬렉션 끝에 키-값 쌍을 추가합니다boolean containKey(key)
: 컬렉션에 키가 있는지 확인boolean containValue(value )
: 컬렉션에 특정 값이 있는지 확인value get(key)
: 키boolean isEmpty()
에 해당하는 값을 가져옵니다. 컬렉션 콘텐츠가 비어 있고 null 값을 판단할 수 없는지 확인void putAll(지도 컬렉션 이름)
: 지정된 지도 컬렉션의 콘텐츠를 현재 컬렉션의 끝에 추가int size()
: 키-값 쌍의 수를 가져옵니다. 컬렉션public class Test { public static void main(String[] args) { //数字-String 1 - 一 1 - yi Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "一"); map.put(111, "yiyiyi"); map.put(666, "liuliuliu"); map.put(111, "一一一"); System.out.println(map.containsKey(678));//f System.out.println(map.containsValue("yiyiyi"));//t System.out.println(map.get(111)); map.remove(666); System.out.println(map.get(666)); System.out.println(map.size());//2 }}Traversal method
1,
keySet()+get()먼저 모든 키를 얻은 다음 키를 탐색하여 모든 값을 얻습니다.
//获取所有键 Set<键的泛型> set=集合名.keySet(); //遍历所有键 set.forEach( o-> //o就代表当前正在被遍历的键 //通过集合名.get(o)可以得到对应的值 );如: Map<Integer, String> map = new HashMap<>(); map.put(123, "yiersan"); map.put(234, "ersansi"); map.put(456, "siwuliu"); map.put(999, "jiujiujiu"); Set<Integer> set=map.keySet(); set.forEach(o-> System.out.println("键:"+o+",值:"+map.get(o)));
HashMap
可以存放null值,键可以存放0-1个null,值可以存放0-n个null
LinkedHashMap
可以保证存入取出顺序一致
TreeMap
可以根据键进行默认的升序排序
HashTable
不能存放null值
Properties
键和值必须为String类型
Set
是一个只有键,没有值的Map
集合
底层数组长度为16
数组加载因子为75%
,当数组位使用到达75%时,会以平衡二叉树
的方式进行数组扩容,扩容长度为原长度*2
Collection<值的泛型> coll = 集合名.values();coll.forEach(v-> v就代表当前的值);如: Collection<String> coll = map.values();
coll.forEach(v-> System.out.println(v));
//获取键值对对象集合 Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { //通过entry.getKey()获取键 //通过entry.getValue()获取值 }如: Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()) } System.out.println("lambda自遍历:"); set2.forEach(entry-> System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()));🎜🎜4, 🎜Self-traversing forEach🎜 🎜🎜JDK8.0🎜🎜🎜🎜
集合名.forEach(new BiConsumer<键的泛型, 值的泛型>() { @Override public void accept(键的泛型 i, 值的泛型 s) { //i代表键 //s代表值 } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> k代表键,v代表值);如: map.forEach(new BiConsumer<Integer, String>() { @Override public void accept(Integer i, String s) { System.out.println("键:"+i+",值:"+s); } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> System.out.println("键:"+k+",值:"+v));🎜다른 구현 클래스 사용🎜🎜🎜🎜🎜은 null 값을 저장할 수 있고, 키는 0-1 null을 저장할 수 있고, 값은 0-n null을 저장할 수 있습니다🎜🎜🎜🎜🎜 수 있습니다. 보장됩니다 입출금 순서는 일관됩니다🎜🎜🎜🎜🎜기본 오름차순은 키에 따라 정렬될 수 있습니다🎜🎜🎜기본적으로 null의 정렬은 수행할 수 없습니다🎜🎜키가 사용자 정의 유형인 경우 정렬 규칙은 다음과 같습니다. TreeSet과 동일하게 설정해야 합니다🎜🎜🎜🎜 🎜🎜null 값을 저장할 수 없습니다🎜🎜🎜🎜🎜키와 값은 문자열 형식이어야 합니다🎜🎜🎜생성은 다형성을 사용하는 것이 권장되지 않습니다🎜🎜제네릭을 선언할 수 없습니다🎜 🎜🎜🎜🎜컬렉션 인터뷰를 위한 보충 지식 포인트🎜🎜🎜🎜
Set
는 키만 있고 값은 없는 Map
컬렉션입니다. 🎜🎜🎜🎜기본 길이 배열은 16
🎜🎜🎜🎜배열 로딩 비율은 75%
이며, 배열 비트 사용량이 75%에 도달하면 배열은 방식으로 확장됩니다. 균형 이진 트리
. 확장 길이는 원래 길이 *2
입니다. 🎜각 배열 길이는 16🎜🎜입니다.Set이나 Map은 왜 작은 값에서 큰 값으로 값을 저장하나요?
빨간색-검은색 tree는 빠른 쿼리 효율성
을 특징으로 하는 이진 검색 방법을 사용합니다. 해시 코드 값이 현재 요소보다 큰 경우 해시 코드 값을 판단 기준으로 사용합니다. 해시 코드 값이 현재 요소인 , 왼쪽에 저장
이진 검색 방법: 한 번에 데이터의 절반을 잠그는 것이 특징
해시 테이블 배열의 연결 목록이 8에 도달하면 연결 목록 요소를 재구성하고 레드 블랙 트리
권장 학습: "java 비디오 튜토리얼"
위 내용은 Java의 Map 인터페이스 사용 및 인터뷰 지식 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!