集合 --- Map集合

在这里插入图片描述

接口Map<K,V>
key,value

特点:

  1. 键唯一
  2. 一个键映射一个值
  3. 按键之间的关系维护元素

常用方法:
在这里插入图片描述
boolean containsKey​(Object key):判断key是否存在
boolean containsValue​(Object value):value是否存在

注:put方法中如果key存在,替换value,旧value作为返回值;如果不存在,添加此元素;
remove方法如果key存在返回被删的值,不存在返回空

案例:Entry内部类,entrySet方法的使用

import study001.hash.Person;

import java.util.*;

public class SetTest {
    public static void main(String[] args) {
        Map<String,Integer>map=new HashMap<>();
        map.put("小明",18);
        map.put("李华",99);
        map.put("小王",18);
        Set<Map.Entry<String, Integer>> elements = map.entrySet();

        
        Iterator<Map.Entry<String, Integer>> iterator = elements.iterator();
        while(iterator.hasNext()){
            Map.Entry<String,Integer> ele= iterator.next();
            String key=ele.getKey();
            Integer value=ele.getValue();
            System.out.println(key+"---"+value);
        }
        System.out.println("------------------------------");



        for(Map.Entry<String,Integer>ele:elements){
            String key=ele.getKey();
            Integer value=ele.getValue();
            System.out.println(key+"---"+value);
        }

    }
}

HashMap<K,V>

特点:

  1. 无序,
  2. 多线程
存储自定义类型值

自定义类型值作键必须重写hashCode()方法和equals()方法。
自定义类型值作值可以没有这两个方法。

HashTable集合

特点:

  1. 不允许存在空的键或值
  2. 是单线程集合(同步的)

它的子类Properties集合是唯一和IO六结合的集合

LinkedHashMap<K,V>

继承了HashMap
特点:

  1. 哈希表和链表实现的,所以有迭代顺序
  2. 多线程

练习: 计算一个字符串中每个字符出现的次数
在这里插入图片描述

package study001.hash;

import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class MapTest {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String str=scan.next();
        Map<Character,Integer> map=new HashMap<>();
        for(char ch:str.toCharArray()){
            if(map.containsKey(ch)){
                Integer value=map.get(ch);
                map.put(ch,value+1);
            }else{
                map.put(ch,1);
            }
        }
        for(Character ch:map.keySet()){
            System.out.println(ch+":"+map.get(ch));
        }

    }
}

JDK9的优化–of静态方法

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值