Java 集合框架3

news2024/11/21 0:35:44

一、集合框架分类

二、 关于Map接口的常用类

        1.HashMap

           HashMap类是Map接口的子类,是处理无序键值对集合的

HashMap特征
1.允许有null键和null值
2.数据保存是无序的
3.重复的键被算作一个数据

        i.HashMap构造方法

//HashMap() 构造一个初始存储空间为16,负载因子为0.75的空HashMap集合
HashMap hashMap = new HashMap();
//HashMap(int initialCapacity) 构造一个初始空间为自定义,负载因子为0.75的空的HashMap
HashMap hashMap1 = new HashMap(20);
//HashMap(int initialCapacity,float loadFactor) 构造一个初始空间为自定义,负载因子也为自定义的空的HashMap集合
HashMap hashMap2 = new HashMap(34,0.5f);
//HashMap(Map) 将通过实现Map接口的类型,转换为HashMap类
Hashtable hashtable = new Hashtable();
HashMap hashMap3 = new HashMap(hashtable);

        ii.实例方法

/*
            HashMap类的常用方法
            1.Object put(Object) 向HashMap集合中添加元素
            2.boolean containsKey(Object obj) 集合中是否包含指定键
            3.boolean containsValue(Object obj) 集合中是否包含指定值
            4.Object get(key) 得到指定键的值
            5.boolean isEmpty() 集合是否为空
            6.void clear() 清空集合
            7.int size() 得到集合的键值对个数
            8.Value remove(Object key) 根据指定的键删除对应的键值对数据值,返回被删除键的value值
         */
HashMap hashMap = new HashMap();
hashMap.put("id",972);
hashMap.put("name","张全蛋");
hashMap.put("age",25);
hashMap.put(null,34);
hashMap.put("address",null);
hashMap.put(null,null);
System.out.println(hashMap);
System.out.println(hashMap.size());
System.out.println(hashMap.containsKey(null));
System.out.println(hashMap.containsValue(25)); System.out.println(hashMap.get("address"));
System.out.println(hashMap.isEmpty());
System.out.println(hashMap.remove(null));
System.out.println(hashMap.remove("id"));
hashMap.put("id",972);
System.out.println(hashMap);


//遍历集合
        //Set	keySet() 得到集合中所有的键保存到Set集合中
        Set set = hashMap.keySet();
        for (Object objectkey:set){
            System.out.println(objectkey);
        }
        //	Collection	values() 得到集合中所有的值保存到Collection集合中
        Collection collection = hashMap.values();
        for (Object objectvalue:collection){
            System.out.println(objectvalue);
        }
        //	Set<Map.Entry<K,V>>	entrySet() 得到集合中所有的键值对数据Set集合中
        HashMap<Object,Object> hashMap4 = new HashMap<Object, Object>();
        hashMap4.put("class",238);
        hashMap4.put("soc",78);
        hashMap4.put(23,90);
//        Set<Map.Entry<Object,Object>> set1 = hashMap4.entrySet();
        for (Object object:hashMap4.entrySet()){
            System.out.println(object);
        }

        2.Hashtable

Hashtable特征
1.不允许nul键/null值

2.数据保存是无序的

3.重复的数据被算组一个
4.线程安全
5.用作键的对象必须实现hashCode方法和equals方法

          i.构造方法

 //Hashtable类 是Map接口的子类,是无序集合,处理键值对的集合
        /*
            Hashtable类的构造特征
            1.不允许null键和null值
            2.数据保存是无序的
            3.用作键的对象必须实现hashCode方法和equals方法
            4.重复的键被视为一个数据
            5.线程安全
         */
        //Hashtable类的构造方法
        //1.Hashtable() 构造一个初始容量为11,负载因子为0.75的空集合
        Hashtable hashtable = new Hashtable();
        //2.Hashtable(int initialCapacity) 构造一个自定义初始容量,负载因子为0.75的空集合
        Hashtable hashtable1 = new Hashtable(35);
        //3.Hashtable(int initialCapacity,float loadFactor) 构造一个自定义初始容量,负载因子也为自定义的空集合
        Hashtable hashtable2 = new Hashtable(40,0.5f);
        //4.Hashtable(Map) 将通过Map实现的类,转换为Hashtable
        HashMap hashMap = new HashMap();
        Hashtable hashtable3 = new Hashtable(hashMap);

          ii.实例方法

 /*
            Hashtable类的实例方法
            1.Object put(key,value) 向Hashtable集合中添加键值对
            2.int size() 得到集合中的键值对个数
            3.boolean containsKey() 是否包含键
            4.boolean containsValue() 是否包含值
            5.Value get(key) 根据键得到值
            6.boolean isEmpty() 是否为空
            7.void clear() 清空
            8.Value remove(key) 删除指定键的键值对,返回被删除键的值
         */
        hashtable.put("id",837);
        hashtable.put("name","文秀");
        hashtable.put("age",33);
//        hashtable.put(null,83);
//        hashtable.put(67,null);
//        hashtable.put(null,null);
        System.out.println(hashtable);
        System.out.println(hashtable.size());
        System.out.println(hashtable.containsKey("name"));
        System.out.println(hashtable.containsValue(34));
        System.out.println(hashtable.get("id"));
        System.out.println(hashtable.isEmpty());
        hashtable.put("asdf",232);
        System.out.println(hashtable.remove("asdf"));
        System.out.println(hashtable);

        //遍历
        //Set keySet() 根据键遍历
        Set set = hashtable.keySet();
        for (Object objectkey:set){
            System.out.println(objectkey);
        }
        //Collection values() 根据值遍历
        Collection collection = hashtable.values();
        for (Object objectvalue:collection){
            System.out.println(objectvalue);
        }
        //Set<Map.Entry<k,v>> entrySet() 根据键值遍历
        Hashtable<Object,Object> hashtable4 = new Hashtable<Object, Object>();
        hashtable4.put("learn","java");
        hashtable4.put("time",1999);
        hashtable4.put("soc",89);
        hashtable4.put("sex","男");
        Set<Map.Entry<Object,Object>> set1 = hashtable4.entrySet();
        for (Object object:set1){
            System.out.println(object);
        }

        3.TreeMap

TreeMap特征
1.按照键的字母/数字顺序排列---有序
2.键不能为null,值可以为null
3.重复的键被算作一个数据
5.非线程安全

          i.构造方法

//TreeMap是有序集合,是Map的子类
        /*
            TreeMap类的特征
            1.按照字母或数字顺序排列
            2.不能有null键,可以有null值
            3.重复的键被算作一个数据
            4.非线程安全
         */
        //TreeMap构造方法
        //1.TreeMap() 构造一个空的集合
        TreeMap treeMap = new TreeMap();
        //2.TreeMap(Map) 将其他实现Map的类,转换为TreeMap类
        HashMap hashMap = new HashMap();
        TreeMap treeMap1 = new TreeMap(hashMap);

          ii.实例方法

/*
        TreeMap类的实例方法
        1.Object put(key,value) 添加键值对
        2.int size() 返回键值对的个数
        3.boolean containsKey() 是否包含键
        4.boolean containsValue() 是否包含值
        5.Value get(key) 根据指定键,获取其值
        6.Value remove(key) 根据指定键,删除键值对,返回值
        7.void clear()清空集合
        8.boolean isEmpty() 集合是否为空
         */
        treeMap.put("id",238);
        treeMap.put("name","张全蛋");
        treeMap.put("class","java");
        treeMap.put("address","雁塔区");
//        treeMap.put(1,1);
        System.out.println(treeMap);
        System.out.println(treeMap.size());
        System.out.println(treeMap.containsKey("class"));
        System.out.println(treeMap.containsValue(238));
        System.out.println(treeMap.get("address"));
        System.out.println(treeMap.isEmpty());
        treeMap.put("jhjhd",23);
        System.out.println(treeMap.remove("jhjhd"));
        System.out.println(treeMap);


        //遍历TreeMap集合
        //1.Set keySet() 根据键值遍历
        Set set = treeMap.keySet();
        for (Object objectkey:set){
            System.out.println(objectkey);
        }
        //2.Collection values() 根据值遍历
        Collection collection =treeMap.values();
        for (Object objectvalue:collection){
            System.out.println(objectvalue);
        }
        //Set<Map.Entry<k,v>> entrySet() 根据键值遍历
        TreeMap<String,Integer> treeMap2 = new TreeMap<String, Integer>();
        treeMap2.put("ces",2323);
        treeMap2.put("123",123);
        treeMap2.put("user",23233);
        Set<Map.Entry<String,Integer>> set1 = treeMap2.entrySet();
        for (Map.Entry<String,Integer> entry:set1){
            String key = entry.getKey();
            Integer values = entry.getValue();
            int value = values;
            System.out.println(value+1);
        }

        4.ConcurrentHashMap

ConcurrentHashMap特征
1.数据保存是无序的
2.不允许null键和null值
3.重复的键被算作一个数据
4.线程安全
5.支持高并发处理

          i.构造方法

//ConcurrentHashMap类是无序集合,是Map的子类
        //ConcurrentHashMap类的特征
        //1.不允许null的值和null键
        //2.数据保存是无序的
        //3.重复的键被算作是一个数据。
        //4.线程安全
        //5.支持高并发处理
        //构造方法
        //ConcurrentHashMap() 创建一个新的,空的地图与默认的初始表大小(16)。
        ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
        //ConcurrentHashMap(int initialCapacity)创建一个新的空的地图,其初始表格大小适应指定数量的元素,而不需要动态调整大小
        ConcurrentHashMap conmap2=new ConcurrentHashMap(26);
        //ConcurrentHashMap(int initialCapacity, float loadFactor) 根据给定的元素数量( initialCapacity )和初始表密度( loadFactor )
        ConcurrentHashMap conmap3=new ConcurrentHashMap(20,0.5f);
        //ConcurrentHashMap(Map<? extends K,? extends V> m) 创建与给定地图相同的映射的新地图。
        Hashtable hashtable = new Hashtable();
        ConcurrentHashMap concurrentHashMap1 = new ConcurrentHashMap(hashtable);

          ii.实例方法

 /*
        实例方法
        1.Object 	put(Object key, Object value) 向集合中添加键值对数据
        2.int size() 返回键值对的个数
        3.boolean containsKey(key)是否包含键
        4.boolean contaninsValue(value)是否包含值
        5.void clear()清空集合
        6.value get(key) 根据键,得到值
        7.value remove(key) 根据键删除键值对,返回被删除键的值
        8.boolean isEmpty() 集合是否为空
         */
        concurrentHashMap.put("id",1234);
        concurrentHashMap.put("name","张三");
        concurrentHashMap.put("age",32);
        concurrentHashMap.put("school","北京大学");
        System.out.println(concurrentHashMap.size());
        System.out.println(concurrentHashMap.isEmpty());
        System.out.println(concurrentHashMap.containsKey("age"));
        System.out.println(concurrentHashMap.containsValue(32));
        System.out.println(concurrentHashMap.get("school"));
        concurrentHashMap.put("asdf",23);
        System.out.println(concurrentHashMap.remove("asdf"));

        //遍历
        //Set keySet()按照键遍历
        Set set = concurrentHashMap.keySet();
        for (Object objectkey:set){
            System.out.println(objectkey);
        }
        //Collection values() 按照值遍历
        Collection collection = concurrentHashMap.values();
        for (Object objectvalue:collection){
            System.out.println(objectvalue);
        }

        //Set<Map.Entry<k,v>> entrySet() 根据键和值遍历
        ConcurrentHashMap<String,Integer> concurrentHashMap2 = new ConcurrentHashMap<String, Integer>();
        concurrentHashMap2.put("id",238);
        concurrentHashMap2.put("name",232);
        concurrentHashMap2.put("address",248);
        concurrentHashMap2.put("cool",38);
        for (Map.Entry<String,Integer> entry:concurrentHashMap2.entrySet()){
            String str_key = entry.getKey();
            Integer int_value = entry.getValue();
//            int value = int_value;
//            System.out.println(value+1);
            System.out.println(str_key+"="+int_value);

        }

        5.Collections类

1.Collections类是操作集合中元素的帮助类
2.Collections类中的方法都是静态的【对集合元素的检索,排序,线程安全操作】

        i.常用方法

//Collections.copy(复制到的列表,被复制的列表)将所有元素从一个列表复制到另一个列表中
        ArrayList arrayList = new ArrayList();
        arrayList.add("id");
        arrayList.add("name");
        arrayList.add("age");
        ArrayList arrayList1 = new ArrayList();
        arrayList1.add(123);
        arrayList1.add(234);
        arrayList1.add(734);
        arrayList1.add(5239);
        Collections.copy(arrayList1,arrayList);
        for (Object ob:arrayList1){
            System.out.println(ob);
        }
        for (Object ob:arrayList){
            System.out.println(ob);
        }
        //static <T> void fill(List<? super T> list, T obj)用指定的元素代替指定列表的所有元素
        Collections.fill(arrayList1,"java");
        System.out.println(arrayList1);
        //static T max(Collection<? extends T> coll)根据其元素的自然顺序返回给定集合的最大元素
        ArrayList arrayList3 = new ArrayList();
        arrayList3.add(123);
        arrayList3.add(24);
        arrayList3.add(7342323);
        System.out.println(Collections.max(arrayList3));
        //static T min(Collection<? extends T> coll)根据其元素的自然顺序返回给定集合的最小元素
        System.out.println(Collections.min(arrayList3));
        //static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)将列表中一个指定值的所有出现替换为另一个
        //将arrayList3中的24替换成189
        Collections.replaceAll(arrayList3,24,189);
        System.out.println(arrayList3);
        //static void reverse(List<?> list)反转指定列表中元素的顺序
//        Collections.reverse(arrayList3);
//        System.out.println(arrayList3);
        //static void sort(List<T> list)根据其元素的natural ordering对指定的列表进行排序
        Collections.sort(arrayList3);//从小到大
        System.out.println(arrayList3);
        Collections.sort(arrayList3);//排序
        Collections.reverse(arrayList3);//反转
        System.out.println(arrayList3);//从大到小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zemax混合式非序列模拟

基础设置&#xff1a; 3D视图效果&#xff1a; 接下来用非序列模式设计一个多焦透镜 平行光束经过多焦透镜时&#xff0c;会汇聚在不同焦距处 非序列模式的编辑器如图&#xff1a; 注意不要点击左侧的非序列模式&#xff0c;那个时纯粹的非序列&#xff0c;会清除序列模式的数…

Revit SDK 介绍:AutoStamp 自动水印 AutoUpdate 自动更新 CancelSave

前言 这三个例子都是通过注册事件来完成相应的工作&#xff0c;内容比较简单。 内容 事件参考博客&#xff1a;Revit API&#xff1a;Events 事件总览 AutoStamp 自动水印 使用到的事件&#xff1a; application.ControlledApplication.ViewPrinting application.Controll…

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现EEMD-SSA-LSTM、E…

第一章辩证唯物论,考点七思维导图

逻辑框架 考点七思维导图&#xff1a;

【【萌新的STM32学习-27--USART异步通信配置步骤】】

萌新的STM32学习-27–USART异步通信配置步骤 USART/UART 异步通信配置步骤 1.配置串口工作参数 HAL_UART_Init() 我们会在此处调用MSP中的回调函数 2.串口底层初始化 用户定义HAL_UART_MspInit() 配置GPIO NVIC CLOCK 等 3.开启串口异步接收中断 HAL_UART_Receive_IT() 4.…

基于简单的信息变换实现自然语言模型

题目:基于简单的信息变换实现自然语言模型 摘要:在自然语言处理中,自然语言模型是至关重要的。本论文提出了一种基于简单的信息变换实现自然语言模型的方法。该方法将输入信息进行一系列的信息变换,如分割、属性、等效替换、增加删除等变换,与原始信息进行比较,得知信息是…

解决window安装docker报错问题

第一次打开Docker Desktop后提示错误 试了网上版本都没用&#xff0c;后面发现是电脑没有下载相关虚拟机&#xff1a; 先点击链接下载wsl2&#xff0c;下载后命令行执行&#xff1a;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /…

Jenkins发送邮件(简洁版)

需求背景 Jenkins构建结束需要通知客户下载项目WAR包&#xff0c;太麻烦且构建时间久的话可能忘记通知客户&#xff0c;想要构建结束自动邮件通知客户。 实现方法 # 安装mailx command -v mailx &> /dev/null || sudo yum -y install mailx# 发送邮件 recipient"ch…

深入解析即时通讯App开发中的关键技术

即时通讯App开发在现代社交和通信领域中扮演着重要的角色。随着移动设备的普及和网络的高速发展&#xff0c;人们对即时通讯工具的需求不断增加。本篇文章将深入探讨即时通讯App开发中的关键技术&#xff0c;帮助读者了解该领域的最新动态和技术趋势。 基础架构和通信协议 现…

Fair|Fur —— Fur Workflow

Hair Utils工具架 Hair Utils工具架上的Add Fur工具&#xff0c;对任何groom是一个好的起点&#xff0c;会对所选的skin自动创建Guide Groom和Hair Generate对象&#xff1b;如是带动画的skin&#xff0c;还会创建Guide Deform对象&#xff1b; Hair Utils工具架上的Create Gui…

WindowsServer2019安装.NET3.5

WindowsServer2019安装.NET3.5报0x800f0950 解决方法&#xff1a;复制WindowsServer2019镜像到目的操作系统 右键“此电脑”&#xff0c;以管理员权限打开服务器管理界面。 点击“添加角色和功能”。 然后一直下一步&#xff0c;找到要添加的.NET3.5功能即可。 ​​​​​​​设…

.NET Framework 3.5安装教程

一、概述 使用VS编程时&#xff0c;碰到需要安装低版本.NET Framework框架的第三方库文件。 环境&#xff1a; 操作系统 Window10 软件版本VS2015 二、安装 1、在Win10搜索框输入“启动或关闭 Windows功能”&#xff0c;然后点击“启动或关闭 Windows功能”项&#xff0c;如下图…

复旦MBA姜璐:勇往直前,成长永无止境

日月光华&#xff0c;旦复旦兮&#xff01;复旦MBA如同一个巨大的磁场&#xff0c;吸引了诸多来自五湖四海、各行各业的职场精英。从初入职场的青涩懵懂到如今的独当一面专业干练&#xff0c;他们逐渐成长为职场的中坚力量&#xff0c;在各自领域内发光发热。作为新时代的青年&…

汽车以太网协议栈

《大师说》栏目上线啦# 《大师说》栏目是怿星科技2023年推出的深度思考栏目&#xff0c;通过邀请内部专家&#xff0c;针对智能汽车行业发展、技术趋势等输出个性化的观点。每期一位大师&#xff0c;每位一个话题&#xff0c;本期由我们怿星的CTO虞胜伟&#xff0c;进行分享。…

盘点狼人杀中的强神与弱神 并评价操作体验

最初 强神是大家对猎人的称呼&#xff0c;但随着板子的增加 强神渐渐变成了强神神牌的统称。 狼人杀发展至今板子已经非常多了&#xff0c;而每个板子都会有不同的角色。 相同的是 大部分都会希望拿到一张强力神牌&#xff0c;这样能大大提高我们玩家的游戏体验&#xff0c;但其…

Hadoop 3.2.4 集群搭建详细图文教程

目录 一、集群简介 二、Hadoop 集群部署方式 三、集群安装 3.1 集群角色规划 3.2 服务器基础环境准备 3.2.1 环境初始化 3.2.2 ssh 免密登录&#xff08;在 hadoop01 上执行&#xff09; 3.2.3 各个节点上安装 JDK 1.8 环境 3.3 安装 Hadoop 3.4 Hadoop 安装包目…

如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台

这是 SafeGraph 技术主管经理 Nan Zhu 与亚马逊云科技高级解决方案架构师 Dave Thibault 共同撰写的特约文章。 SafeGraph 是一家地理空间数据公司&#xff0c;管理着全球超过 4100 万个兴趣点&#xff08;POI&#xff0c;Point of Interest&#xff09;&#xff0c;提供品牌隶…

R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例...

原文链接&#xff1a;http://tecdat.cn/?p23426 混合线性模型&#xff0c;又名多层线性模型(Hierarchical linear model)。它比较适合处理嵌套设计(nested)的实验和调查研究数据&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 序言 此外&#xff0…

基于随机森林的otto商品分类

数据集介绍 Otto Group数据集来源于《Otto Group Product Classification Challenge》。Otto集团是世界上最大的电子商务公司之一&#xff0c;在20多个国家拥有子公司。我们每天在全球销售数百万种产品&#xff0c;在我们的产品线中添加了数千种产品。 我们公司对我们产品性能…

如何为 Flutter 应用程序创建环境变量

我们为什么需要环境变量&#xff1f; 主要用于存储高级机密数据&#xff0c;如果泄露可能会危及您产品的安全性。这些变量本地存储在每个用户的本地系统中&#xff0c;不应该签入存储库。每个用户都有这些变量的副本。 配置 在根项目中创建一个名为 .env 的文件夹&#xff08…