写点什么

Java- 进阶:集合框架 3

  • 2021 年 11 月 11 日
  • 本文字数:1883 字

    阅读完需:约 6 分钟

  • 方法返回值为键所对应的值


1. 使用 put 方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回?null,并把指定的键值?添加?到集合中;?2. 使用 put 方法时,若指定的键(key)在集合中?存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换?成指定的新值。3.get(Object key)?: 获取指定键(key)所对应的值(value)


  • 如果集合中没有这个键,返回?null

  • remove(Object key):根据指定的键(key)删除元素,返回?被删除元素的值(value)

  • 如果集合中没有这个键,返回?null

3. Map 集合遍历—— keySet 方法

  • keySet 方法:把所有的?,存储到?Set集合

  • 遍历步骤

  • 调用 map 集合的方法?keySet 方法,把所有的键存储到?Set 集合?中

  • 遍历 Set 集合,获取出 Set 集合中的?所有元素 (Map 中的键)

  • 调用 map 集合?get 方法通过键获取到值


public class MapDemo {public static void main(String[] args) {Map<String,Integer> map = new HashMap<String,Integer>();map.put("a", 11);map.put("b", 12);map.put("c", 13);map.put("d", 14);


Set<String> set = map.keySet();Iterator<String> it = set.iterator();


while(it.hasNext()){String key = it.next();Integer value = map.get(key);System.out.println(key+"...."+value);}


//利用加强 for 遍历 for(String key : map.keySet()){Integer value = map.get(key);System.out.println(key+"...."+value);}

4. Entry 接口

  • 在 Map 类设计时,提供了一个嵌套接口:Entry。Entry 将键值对的对应关系封装成了对象。即?键值对对象,这样我们在遍历 Map 集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值

  • Entry 是 Map 接口中提


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


供的一个?静态内部嵌套接口


  • Map.Entry(K, V)

  • entrySet()方法:用于返回 Map 集合中所有的?键值对(Entry)对象,以?Set集合?形式返回。

5. Map 集合遍历——Entry

  • 键值对方式: 即通过集合中每个?键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

  • 遍历步骤

  • 调用 map 集合方法?entrySet()?,将集合中的映射关系对象,存储到 Set 集合

  • 遍历?包含键值对(Entry)对象的 Set 集合,得到每一个键值对(Entry)对象

  • 通过键值对(Entry)对象,用?getKeygetValue?获取 Entry 对象中的?键与值


Map 集合不能直接使用 迭代器 或者?增强 for?进行遍历。但是转成?Set?之后就可以使用了。


public class MapSet {public static void main(String[] args) {Map<Integer,String> map = new HashMap<>();map.put(1,"a");map.put(2,"ab");map.put(3,"abc");


//调用 map 集合方法 entrySet(),将集合中的映射关系对象,存储到 Set 集合 Set<Map.Entry<Integer,String>> set = map.entrySet();//遍历 Set 集合 Iterator<Map.Entry<Integer,String>> it = set.iterator();while(it.hasNext()){//获取 Set 集合中的元素,也就是映射关系对象//it.next 获取是 Map.Entry 对象 Map.Entry<Integer,String> entry = it.next();//通过键值对(Entry)对象,用 getKey、getValue 获取 Entry 对象中的 键与值 Integer key = entry.getKey();String value = entry.getValue();System.out.println(key+" : "+value);}}//增强 for 循环 for(Map.Entry<Integer,String> entry : map.entrySet()){System.out.println(entry.getKey()+" : "+entry.getValue());}}

6. HashMap 存储自定义类型键值

  • 当给 HashMap 中存放自定义对象时,如果自定义对象作为?key?存在,这时要保证?对象唯一,必须复写对象的?hashCode?和?equals 方法

  • 如果要保证 map 中存放的 key 和 取出的顺序一致,可以使用?LinkedHashMap?集合来存放。



二、集合继承体系的面向对象思想

  • 接口:用来明确所有集合中该具有的功能,相当于在定义集合功能标准;

  • 抽象类:把多个集合中功能实现方式相同的方法,抽取到抽象类实现,具体集合不再编写,继承使用即可;

  • 具体类:继承抽象类,实现接口,重写所有抽象方法,达到具备指定功能的集合。每个具体集合类,根据自身的数据存储结构方式,对接口中的功能方法,进行不同方式的实现。




三、数组和 List 的相互转化

1. Collction 转化为数组

  • Arrays.asList?得到的 List,不允许向其中添加元素,或者删除其中的元素,因为是?线程不安全的集合,必须转化为?线程安全?的集合

  • Collections.synchronizedList(list):将 list 转化为线程安全的集合

  • Collections.synchronizedList(set)

  • Collections.synchronizedList(map)


public class Supplement01 {public static void main(String[] args) {


//int[] a = {1, 2, 3, 4};//将数组转化为集合

评论

发布
暂无评论
Java-进阶:集合框架3