Java 进阶:集合框架3

Java集合框架是什么?说出一些集合框架的优点? 干货太重,且文字比较多。需要花费时间与耐心细细咀嚼,但是真的能收获到很多。 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。 1... 阅读详情

目录

一、Map 接口
1. Map 和 Collection
2. Map 接口中的常用方法
3. Map 集合遍历—— keySet方法
4. Entry 接口
5. Map 集合遍历——Entry
6. HashMap 存储自定义类型键值
二、集合继承体系的面向对象思想
三、数组和 List 的相互转化
1. Collction转化为数组


一、Map 接口

1. Map 和 Collection

  • Collection 中的集合,元素是 孤立存在 的,向集合中存储元素采用一个个元素的方式存储

  • Map 中的集合,元素是 成对 存在的。每个元素由 键 与 值 两部分组成,通过键可以找对所对应的值。

  • Collection 中的集合称为 单列集合,Map 中的集合称为 双列集合

  • Map中的集合 不能包含重复的键,值可以重复;每个键只能对应一个值

  • Map 中常用的集合为:

  • HashMap集合
    存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。

  • LinkedHashMap集合。
    存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

  • Map 接口中的集合都有两个泛型变量 <K,V> ,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。

2. Map 接口中的常用方法

  • put(K key, V value):将指定的键与值对应起来,并添加到集合中

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

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接口中提供的一个 静态内部嵌套接口
  • Map.Entry(K, V)
  • entrySet()方法:用于返回 Map 集合中所有的 键值对(Entry)对象,以 Set集合 形式返回。

5. Map 集合遍历——Entry

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

  • 遍历步骤:

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

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

  • 通过键值对(Entry)对象,用 getKey、getValue 获取 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};
        //将数组转化为集合
        List<Integer> list = Arrays.asList(1, 2, 3, 4);

        //添加元素,删除元素
        //用Arrays.asList得到的List,不允许向其中添加元素,或者删除其中的元素
        //list.add(5);
        //list.remove(0);

        //线程不安全的集合
        ArrayList<String> list1 = new ArrayList<>();

        //将线程不安全的集合转化为线程安全的集合
        //strings 就是一个线程安全的集合
        List<String> strings = Collections.synchronizedList(list1);

    }
}
Himall商城ExpressDaDaHelper 取消订单(线上环境) 阅读详情

相关推荐

Vivado中怎么做set_input_delay约束

参考:https://forums.xilinx.com/t5/Timing-Analysis/Hold-violation-in-ISERDES/td-p/715121前言在STA中,要分析上游器件和FPGA之间的时序关系就得指定inputdelay。流程什么是inputdelay:约定上游芯片输出及时钟之间的关系。约束的目的就是看适配后的时序关系是什么样的。以下以源同步接口举例,...

小翁同学 6560

JAVA SE — Day 20

目 录 第1章 Map接口 1.1 概述 1.2 常用集合概述 1.3 常用方法 1.4 遍历键找值方式 1.5 Entry键值对对象 1.6 Map集合遍历键值对方式 1.7 HashMap存储自定义类型键值 1.8 静态导入 1.9 可变参数 1.10 Collections集合工具类 1.11 集合嵌套 1.12 集合继承体系的面向对象思想 第2章 模拟斗地主洗牌发牌 第3章 总结

yanqing_happy的博客 301

用Python实现古诗词填字游戏(三)

古诗词做填字游戏的第三部分代码,也是最核心的部分。实现对诗文和关键字的选定,并确定文字的输出位置。

PosPro的专栏 6119

Java基础学习笔记十七 集合框架(三)之Map

Map接口 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collection中的集合称为单列集合,Map中...

weixin_30764771的博客 391

大数据之父_BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”

原标题:BIM先驱Charles (Chuck) M. Eastman逝世——致敬“BIM之父”BIM研究的先驱、佐治亚理工教授Charles (Chuck) M. Eastman于本周一(11月9日)在其Atlanta家中逝世。特转韩国Yonsei大学Ghang Lee教授的讣文以作纪念。过世原因未说明。BIM的出现是与当今时代科技的发展分不开的。在信息时代建筑发展面临的挑战巨大:建筑物越建越高...

weixin_39941262的博客 3303

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 4035

Java——Map

接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collection中的集合称为单列集合,Map中...

weixin_38278993的博客 180

一种白平衡增益计算中白点权重计算简易实现方式

一种白平衡白点距离权重简易实现方式

大熊 385

斗地主:洗牌发牌

按照斗地主的规则,完成洗牌发牌的动作。 具体规则: 使用54张牌打乱顺序 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 public static void main(String[] args) { //定义一副牌 ArrayList list = new ArrayList(); //创建颜色,分为四种颜色,利用ArrayList ArrayLi

qq_38049721的博客 447

EMB电子机械制动器夹紧力预估策略分析

本文探讨了电子机械制动器(EMB)夹紧力的四种预估方法:1)基于电机电流的方法简单经济但易受干扰;2)基于位置传感器的方法实时性好但依赖模型精度;3)直接力测量精度最高但成本较高;同时提出未来将结合AI和数字孪生技术提升预估精度。研究显示,准确的夹紧力预估对制动安全性、能效和舒适性至关重要,当前面临温度稳定性、参数漂移等技术挑战。随着智能算法的发展,EMB夹紧力预估将实现更高精度和可靠性。

m0_59012156的博客 854

YOLOv11低光照检测性能优化:基于Retinexformer主干网络的深度改进实践

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!@[TOC]在自动驾驶、安防监控、遥感探测等关键领域,目标检测系统必须保证24小时全天候的可靠工作。然而,现有最先进的目标检测模型,包括YOLOv11,其训练数据大多源于光照良好的场景。当环境光照条件急剧下降时,图像会出现严重的噪声、低对比度、颜色失真和细节丢失,直接导致模型性能断崖式下跌。常规的解决方案如图像直方图均衡化或简单的伽马校正,往往收效甚微,甚至可能放大噪声,进一步干扰检测。

m0_71589036的博客 190

集合【Map、可变参数、Collections】

第1章    Map接口1.1     Map接口概述我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。l  Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。l  Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。l  Co...

Jade-Tiger的博客 435

《网络信息制作与发布》实训全流程:从专题策划、网站构建到前端实现与上线发布

本文详细介绍了WEB设计专题网站从策划到发布的全流程。主要内容包括:1.网络专题设计(确定主题、编写策划方案、素材搜集整理);2.网站结构构建(设计二级栏目、绘制布局图);3.艺术设计(配色方案、版式设计);4.网页制作(使用Dreamweaver进行标准化布局);5.信息发布(通过Dreamweaver和CuteFTP上传文件、网站维护与备份)。以"学习WEB设计"专题为例,采用框架结构,包含20余个栏目,使用深灰和蓝色为主色调。文章提供了完整的操作步骤和技术要点,适用于网站开发学习者

深耕计算机专业知识与技术。 1536

Java-进阶:集合框架3

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

2401_84010326的博客 1121

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java进阶3:Java集合框架、ArrayList、LinkedList、HashSet、HashMap和他们的迭代器

本文介绍了Java集合框架的核心概念和常用实现类。主要内容包括:集合框架的设计目标(高性能、互操作性、易扩展性);两种容器类型Collection和Map;主要集合接口List、Set、Queue的区别;常用实现类ArrayList、LinkedList、HashSet的使用方法。重点讲解了ArrayList的动态数组特性及其增删改查操作,LinkedList的链表结构及其适用场景,以及HashSet的无序不重复特性。文章还涉及集合排序、基本类型处理等实用技巧,为Java集合框架的使用提供了全面指导。

Andytoe的博客 2142

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java进阶篇1-3:集合框架(单列集合)

集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。

qq_40489522的博客 245

Java-进阶:集合框架3,javaee教程文档

LinkedHashMap集合。 存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 Map 接口中的集合都有两个泛型变量 <K,V> ,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。 2. Map 接口中的常用方法 put(K key, V value):将指定的键与值对应..

m0_64384202的博客 142

Java-进阶:集合框架3,超详细讲解

如果集合中没有这个键,返回 null 3. Map 集合遍历—— keySet方法 keySet 方法:把所有的 键,存储到 Set集合 遍历步骤: 调用 map 集合的方法 keySet方法,把所有的键存储到 Set集合 中 遍历 Set集合,获取出 Set集合中的 所有元素 (Map中的键) 调用 map集合 get方法,通过键获取到值 public class MapDemo { pub.

m0_60635084的博客 131

java集合详解_「软帝学院」Java进阶者专栏:集合框架详解3

软帝学院笔记Day14集合框架(HashSet存储字符串并遍历)A:Set集合概述及特点通过API查看即可B:案例演示HashSet存储字符串并遍历HashSet hs = new HashSet<>(); boolean b1 = hs.add("a"); boolean b2 = hs.add("a"); //当存储不成功的时候,返回false System.out.printl...

weixin_39805387的博客 66
上一篇: Java 进阶:集合框架2
下一篇: Java 进阶:多线程1
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值