10.5JavaSE Map

Map 不是集合,是一个单独的接口,但是HashMap 底层是散列表,也就是Map

HashSet底层是散列表。

散列表可以看成是一个数组数组中每个值都是链表          数组会先计算哈希扣得算法。

set 和Map没有修改

set 只要新增和删除

散列表:存的是Kv 结构

哈希MAP底层实现:

  1. 先调用hashCode方法计算hash值
  2. 放在散列表数组对应的位置
  3. 当再次存放值时,先调用hashCode计算hash值,如果和之前的hash值相同,
  4. 再去用equals()方法比较这两个元素是否真的相等,
  5. 相同不添加,不同则在该位置生成个链表,并存储在链表上。
  6. 当该链表存放个数超过8,则该链表自动转化成红黑树。

Map

映射关系  key  value

Map a =new hashmap();  创建Map

Map 的常用方法

Map. put() 添加元素。

注意: 如果放入相同的Key值时候,Key不变value值覆盖。

containskey   是否包含K值

System.out.println(map.containsKey("包含的对象"));   是否包含 K值

Values    所有的v值

Collection<Integer>values map.values();  所有的Value值
for (Integer eve:values){
System.out.println(eve);
}

setKey  获取所有的Key

Set<string>strings map.keySet();
for (String eve:strings){
System.out.println("key:"+eve+"=====value:"+map.get(eve));

map.entrySet()     获取所有的entry 对象, 包含每个key和对应的valve值

Set<Map.Entry<string,Integer>>entries map.entrySet();
for (Map.Entry<String,Integer>eve:entries){
System.out.println(eve.getKey()+"=="+eve.getValue())


Entry 相当一个实体类, 

Map 转成list

Map转List
Set<Map.Entry<Integer,String>>entries map.entrySet();
List<Map.Entry<Integer,string>>list=new ArrayList<>(entries);

 排序

public class Map_02 {
//    2. 给出一个字符串,只包含小写字母“saefgwsadfwebatgfnlswepkjibdnj”
//	计算字符串中每个字符出现的个数,并以value进行降序排序,加入value相等则以字符升序排序
//	最终输出格式为z(5)a(3)b(3)c(2)d(1)
//	1既然是字符和次数肯定是键值对存储,key表示字符,value表示个数
//	2遍历字符串,把每个字符取出
//	3判断map中是否包含这个key,如果包含value+1 ,不包含,添加进去value默认为1
//	4通过entrySet转换为set
//	5通过new ArrayList(set)转换为list
//	6通过collections.sort()编写匿名内部类进行排序
public static void main(String[] args) {
    Map <Character,Integer> map= new HashMap<>();

String string="saefgwsadfwebatgfnlswepkjibdnj";
    char[] chars = string.toCharArray();
    for (char eve:chars) {
        if (map.containsKey(eve)){
             map.put(eve,map.get(eve) + 1);
        }else
            {
                map.put(eve,1);
            }


    } Set<Map.Entry<Character, Integer>> entries = map.entrySet();
    List< Map.Entry<Character, Integer>>list=new ArrayList<>(entries);
    Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
        @Override
        public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
            return o2.getValue()- o1.getValue();
        }
    });
    for (Map.Entry<Character, Integer> entry : entries) {
        System.out.println("字母"+entry.getKey()+"出现的次数"+entry.getValue()+"次");

    }






    System.out.println(list);





}

}

TreeMap

排序都是排的Key值。 

Properties

Set 放kv对

Get  获取kv值 , 和一个默认设置

获取默认值

System.out.println(properties.getProperty(key:"ewtew",defaultValue:"12345678"))

存数据就用 Hash map   想排序就用Treemap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值