「JavaDay18 」Map集合

JavaDay18 Map

https://github.com/Philbenzy/Java-question-100/tree/main/day18
本节学习到的有:

(1)HashMap

(2)TreeMap

(3)Collection工具类

1-关于Map类

关于Mapl类需要知道的有:

  • Map类是一种双列集合,被称为键与值
  • 键在集合中保持唯一,值可以重复
  • 在Map中,所有的数据关系仅对键有效
  • 在进行Map集合的遍历时可以使用两种方法进行,键找值法,键值对法。

2-HashMap

(1)特点

底层为哈希表结构,使用equals()方法和compareTo()方法确保键值唯一,

(2)功能

  • keySet( ):得到键集合
  • get(key):得到键所对应的值

(3)HashMap练习

  • HashMap<String,String>:HashMapStringWithString.java
  • HashMap<Integer,String>:HashMapIntegerWithString.java
  • HashMap<String,自定义对象>:值为对象HashMapStringWithObject.java
  • HashMap<自定义对象,String>:键为对象HashMapObjectWithString.java 注意:需要重写方法保证唯一性

3-TreeMap

(1)特点

底层为红黑树结构实现,具有对元素排序的功能,在排序时返回0则可以帮助我们去掉重复键值元素,

排序方式可以由元素自身实现比较器实现完成。

(2)功能

  • keySet( ):得到键集合
  • get(key):得到键所对应的值

(3)练习

  • TreeMap<String,String>:TreeMapStringWithString.java
  • TreeMap<Student,String>:TreeMapStudentWithString.java,注意:使用比较器进行年龄排序
  • 使用TreeMap统计字符串中字母出现的次数:CountKeyBoardTime.java

4-Map集合的遍历

(1)用找值

UseKeyFindValue.java

package my_work;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

// 使用键对map进行遍历
public class UseKeyFindValue {
    public static void main(String[] args) {
        Map<String, String> hp = new HashMap<>();

        hp.put("邓超", "孙俪");
        hp.put("黄晓明", "杨颖");
        hp.put("周杰伦", "蔡依林");
        hp.put("刘恺威", "杨幂");

        // 使用「键」对集合进行遍历
        Set<String> s = hp.keySet(); // 将键组合成为一个集合
        for (String str : s){
            System.out.println(str+"- - - "+hp.get(str));
        }
    }
}

(2)用键值对找键与值

UseMapFindValue.java

package my_work;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class UseMapFindValue {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();

        map.put("杨过", "小龙女");
        map.put("郭靖", "黄蓉");
        map.put("杨康", "穆念慈");
        map.put("陈玄风", "梅超风");

        Set<Map.Entry<String,String>> s = map.entrySet();
        for (Map.Entry<String,String> s2 : s){
            String name = s2.getKey();
            String value = s2.getValue();
            System.out.println("name: "+name+" value: "+value);
        }
    }
}

(3)案例演示:集合的嵌套遍历

  • HashMap嵌套HashMap 案例演示:HashMapLoopInsert.java

  • HashMap嵌套ArrayList 案例演示:HashMapLoopWithArrayList.java

5-Collections工具类

(1)Collection和Collections的区别

  • Collection是顶层接口,它的子类接口有两个,分别为List和Set

  • Collections中封装了关于集合对象操作的类,可以进行排序与查找

(2)Collection类与Map类的区别

  • Collection类为单列集合的顶层接口,Map类为双列集合的的顶层接口
  • Collection元素单个出现,Map中的元素以键值对方式匹配,数据结构只针对键

(3)Collections常用方法

  • public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。
  • public static <T> int binarySearch(List<?> list,T key):二分查找
  • public static <T> T max(Collection<?> coll):最大值
  • public static void reverse(List<?> list):反转
  • public static void shuffle(List<?> list):随机置换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值