>  기사  >  Java  >  Java의 Map 인터페이스 사용 및 인터뷰 지식 요약

Java의 Map 인터페이스 사용 및 인터뷰 지식 요약

WBOY
WBOY앞으로
2022-07-20 14:17:461523검색

이 기사에서는 Map 인터페이스의 사용과 Map 인터페이스 저장 특성, 공통 구현 클래스, 생성 방법, 공통 방법 등 인터뷰 지식 포인트에 대한 관련 질문을 주로 구성하는 java에 대한 관련 지식을 제공합니다. 아래 내용이 모든 분들께 도움이 되었으면 좋겠습니다.

Java의 Map 인터페이스 사용 및 인터뷰 지식 요약

추천 학습: "java 비디오 튜토리얼"

Map 인터페이스

저장 기능

  • 키(키) 값(값) 쌍의 형태로 저장됩니다

  • 키는 순서가 없고 순서도 없습니다. 첨자, 요소는 반복될 수 없습니다

  • 값은 순서가 없으며, 첨자 없음, 요소는 반복될 수 있습니다

공통 구현 클래스

  1. HashMap
    • JDK1.2 기본 해시 테이블 구현은 스레드에 안전하지 않으며 매우 효율적입니다.
  2. LinkedHashMap
    • JDK1.2는 HashMap의 하위 클래스입니다. 기본 해시 테이블 구현은 스레드로부터 안전하고 효율성이 높습니다
  3. TreeMap
    • JDK1.2는 SortedMap의 구현 클래스입니다. 기본 레드-블랙 트리 구현은 스레드에 안전하지 않으며 매우 효율적입니다
  4. HashTable
    • JDK1.0 기본 해시 테이블 구현은 스레드로부터 안전하고 비효율적입니다
  5. Properties
    • JDK1.0은 HashTable의 하위 클래스입니다.

생성 방법

  • 다형성 사용

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): 컬렉션 끝에 키-값 쌍을 추가합니다
  • 키가 이미 존재하는 경우 값을 바꿉니다
    • voidclear() : 컬렉션 요소 지우기
boolean containKey(key): 컬렉션에 키가 있는지 확인
  • boolean containValue(value ) : 컬렉션에 특정 값이 있는지 확인
    • value get(key): 키
    • boolean isEmpty()에 해당하는 값을 가져옵니다. 컬렉션 콘텐츠가 비어 있고 null 값을 판단할 수 없는지 확인
void putAll(지도 컬렉션 이름): 지정된 지도 컬렉션의 콘텐츠를 현재 컬렉션의 끝에 추가
  • valueremove(key): 키에 해당하는 키-값 쌍을 제거합니다
    • 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<키의 일반> keySet(): Set 컬렉션에 저장된 모든 키를 가져오고
            //获取所有键
            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)));
  • 2, 값 ()
    모든 값을 직접 가져오기
  • Collection value(): Collection에 저장된 모든 값을 가져오고
    • HashMap可以存放null值,键可以存放0-1个null,值可以存放0-n个null

    • LinkedHashMap可以保证存入取出顺序一致

    • TreeMap可以根据键进行默认的升序排序

      • 不能对null进行默认排序
      • 如果键为自定义类型,则必须设置排序规则,方式与TreeSet一致
    • 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));

      3, 🎜entrySet()을 반환합니다. 🎜 🎜🎜🎜키-값 쌍 개체를 가져와서 탐색합니다.🎜🎜🎜🎜Set< Map.Entry< 일반 유형의 키, 일반 유형의 값> 컬렉션 설정 및 반환 🎜🎜🎜🎜Set< Map.Entry< 일반 유형의 키> Set<키-값 쌍 객체>🎜🎜🎜🎜getKey()와 동일: 항목에서 키 가져오기 object🎜🎜🎜 🎜getValue(): Entry 개체의 값을 가져옵니다🎜🎜🎜🎜🎜
              //获取键值对对象集合
              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는 빠른 쿼리 효율성

    • red-black tree

      을 특징으로 하는 이진 검색 방법을 사용합니다. 해시 코드 값이 현재 요소보다 큰 경우 해시 코드 값을 판단 기준으로 사용합니다. 해시 코드 값이 현재 요소인 , 왼쪽에 저장

    • 이진 검색 방법: 한 번에 데이터의 절반을 잠그는 것이 특징

    • 해시 테이블 배열의 연결 목록이 8에 도달하면 연결 목록 요소를 재구성하고 레드 블랙 트리

    권장 학습: "java 비디오 튜토리얼"

    위 내용은 Java의 Map 인터페이스 사용 및 인터뷰 지식 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제