java map清除值为null的元素_Java中的集合框架大总结

直接上图:

e756bc2601af2ccfc5c712720f55f41e.png

从上面的集合框架图可以看到:Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合;另一种是图(Map),存储键/值对映射。Collection接口又有两个子接口,List和Set,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。

集合框架是一个用来代表和操纵集合的统一框架。所有的集合框架都包含如下内容:

接口:是代表集合的抽象数据类型。例如:Collection、List、Set、Map等。之所以定义多个接口,是为了以不同的方式操作集合对象。

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

除了集合,该框架也定义了几个Map接口和类。Map里存储的是键/值对。尽管Map不是集合,但是它们完全整合在集合中。Java集合框架提供了一套性能优良,使用方便的接口和类,Java集合框架位于java.util包中,所以当使用集合框架的时候需要进行导包。

一、集合接口:

1.Collection

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素,Java不提供直接继承自Collection的类,只提供继承于Collection的子接口(如List和Set),Collection接口存储一组不唯一,没有顺序的对象。

2.List

List接口是一个有顺序的Collection,使用此接口能够精确地控制每个元素插入的位置,能够通过索引(元素在List中的位置,类似于数组的下标)来访问List 中的元素,第一个元素的索引为0,而且允许有相同的元素。List接口存储一组不唯一,有序(插入顺序)的对象。

3.Set

Set具有与List完全一样的接口,只是行为上不同,Set不保存重复的元素。Set接口存储一组唯一,无序的对象。

4.Map

Map接口存储一组键值对对象,提供key(键)到value(值)的映射。

5.Map.Entry

Map.Entry描述在一个Map中的一个元素(键/值对),是一个Map的内部接口。

二、Set和List的区别:

1.Set接口实例存储的是无序的,不重复的数据。List接口实例存储的是有序的,可以重复的元素。

2.Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置的改变,实现类有HashSet,TreeSet。

3.List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变,实现类有ArrayList,LinkedList,Vector。

三、集合实现类

1.AbstractCollection:实现了大部分的集合接口。

2.AbstractList:继承于AbstractCollection并且实现了大部分List接口。

3.LinkedList:该类实现了List接口,允许有null元素。主要用于创建链表数据结构,LinkedList查找效率低。

4.ArrayList:该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好地性能。

5.AbstractSet:继承于AbstractCollection并且实现了大部分Set接口。

6.HashSet:该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能有一个。

7.LinkedHashSet:具有可预知迭代顺序的Set接口的哈希表和链表列表实现。

8.TreeSet:该类实现了Set接口,可以实现排序等功能。

9.AbstractMap:实现了大部分的Map接口。

10.HashMap:HashMap是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

11.TreeMap:继承了AbstractMap,并且使用一棵树。

12.LinkedHashMap:继承于HashMap,使用元素的自然顺序对元素进行排序。

13.Vector:该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

14.HashTable:HashTable是Dictionary(字典)类的子类,位于java.util包中。

四、迭代器的使用(遍历集合)

1、遍历ArrayList

/** * 采用不同的方法遍历ArrayList集合 * 其中采用迭代器的方法可以不用担心在遍历的过程中会超出集合的长度 * */public class TestArrayList { public static void main(String[] args) { List list = new ArrayList<>(); list.add("吴永吉"); list.add("吴宇涛"); list.add("吴旭东");  //第一种遍历:使用普通for System.out.println("第一种遍历:"); for(int i=0;i iter = list.iterator(); while(iter.hasNext()) { //判断下一个元素之后是否有值 System.out.println(iter.next()); } }}

2、遍历HashSet

/** * 采用不同的方法遍历HashSet集合 * */public class TestHashSet { public static void main(String[] args) { Set set = new HashSet<>(); set.add("吴永吉"); set.add("吴宇涛"); set.add("吴旭东");  //第一种遍历:使用foreach System.out.println("第一种遍历:"); for(String str:set) { System.out.println(str); }  //第二种遍历:将set转换为数组相关的内容进行遍历 System.out.println("第二种遍历:"); String[] strArray = new String[set.size()]; set.toArray(strArray); for(String str:strArray) { System.out.println(str); }  //第三种遍历:使用迭代器进行遍历 System.out.println("第三种遍历:"); Iterator iter = set.iterator(); while(iter.hasNext()) { //判断下一个元素之后是否有值 System.out.println(iter.next()); } }}

 3、遍历HashMap

/** * 采用不同的方式遍历HashMap集合 * */public class TestHashMap { public static void main(String[] args) { Map map = new HashMap<>(); map.put(1, "吴永吉"); map.put(2, "吴宇涛"); map.put(3, "吴旭东");  //第一种遍历:使用Map.keySet遍历key和value System.out.println("第一种遍历:"); for(Integer key:map.keySet()) { System.out.println("key:"+key+

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

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

相关文章

土木转计算机 但计算机学院不好,土木妹子转计算机,较高三维水科研,求指导!...

2016-12-15velvetvalley个人情况当前阶段大四本科院校某中流985&#xff0c;top30本科专业土木&#xff0c;辅修计算机GPA土木91.6/100,10/111&#xff1b;计算机88.4/100,1/23GRE/GMAT3284语言成绩109目标专业计算机科学计划留学年份:2017秋季个人背景:一个水国创&#xff0c;…

关于计算机软件系统分类能够匹配的有,以下关于计算机软件系统分类能够匹配的有:...

摘要&#xff1a;关于够匹比低高强钢筋筋的极限度钢大强度应变拉伸。统分变异系数主观权是一种法赋赋权法。关于够匹对第的说确的物流法正三方是(。...关于够匹比低高强钢筋筋的极限度钢大强度应变拉伸。最大区边压应缘力在受压&#xff0c;计算机软件系破坏截面梁正适筋受弯时…

开关 关闭_无论用什么品牌手机,这个开关要关闭,以免耗电又卡顿,抓紧试试...

各位观众老爷大家好&#xff0c;给大家鞠个躬&#xff0c;每天给大家分享实用的生活小妙招。现在我们的工作生活中已经离不开手机&#xff0c;平时用久了手机卡顿不流畅&#xff0c;耗电也会随之增加&#xff0c;其实有可能是没有把这几个开关关闭&#xff0c;今天和大家分享一…

卷积神经网络中十大拍案叫绝的操作

来源 | 知乎作者 | Professor hoCNN从2012年的AlexNet发展至今&#xff0c;科学家们发明出各种各样的CNN模型&#xff0c;一个比一个深&#xff0c;一个比一个准确&#xff0c;一个比一个轻量。我下面会对近几年一些具有变革性的工作进行简单盘点&#xff0c;从这些充满革新性的…

提高代码可读性的10个技巧

在本文中&#xff0c;作者从注释&#xff0c;缩进&#xff0c;代码分组&#xff0c;命名方式等方面&#xff0c;介绍了10个提高代码可读性的技巧&#xff0c;供读者学习和借鉴。 以下为译文&#xff1a;如果你的代码很容易阅读&#xff0c;这也会帮助你调试自己的程序&#xff…

内蒙古一级计算机考试时间2015,2017年内蒙古计算机一级考试报名时间

2017年内蒙古计算机一级考试报名时间一级分为DOS版和Windows版&#xff0c;考核应试者计算机基本知识和使用微机系统的初步能力&#xff0c;那么&#xff0c;2017年内蒙古计算机一级考试报名时间是什么时候&#xff1f;一起来看看&#xff1a;2017年内蒙古计算机一级考试报名时…

去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

作者&#xff1a;reed&#xff0c;一个热爱技术的斜杠青年&#xff0c;程序员面试联合创始人前文回顾&#xff1a;leetcode1. 两数之和--每天刷一道leetcode系列&#xff01;leetcode2. 两数相加--每天刷一道leetcode系列&#xff01;leetcode3. 无重复字符的最长子串--每天刷一…

6个月清洗近千亿条微信支付交易记录,他们要搞什么大事情?

本文转载自腾讯技术工程官方号背景&#xff1a;2013年8月&#xff0c;微信红包上线。2014年春节微信红包引爆社交支付。2015年春晚红包摇一摇&#xff0c;推动微信红包在全国迅速普及。此后&#xff0c;每逢节假日或特殊日子&#xff0c;人们都会自主的兴起发红包&#xff0c;使…

右下角文字如何写_如何提取任意小程序的小程序路径

这几天我在写关于公众号和小程序互通的文章&#xff0c;在公众号跳转小程序的设置中有一个信息绕不过去&#xff0c;那就是小程序路径&#xff0c;对于非开发人员&#xff0c;如何轻松获取小程序路径是本文所讲述的内容本文内容本文通过具体截图文字描述&#xff0c;获取某个小…

基于Docker持续交付平台建设的实践

导读&#xff1a;中国五矿和阿里巴巴联手打造的钢铁服务专业平台五阿哥&#xff0c;通过集结阿里巴巴在大数据、电商平台和互联网产品技术上的优势&#xff0c;为终端用户带来一站式采购体验。本文是五阿哥运维技术团队针对Docker容器技术在如何在持续交付过程中探索和实践&…

计算机课件比赛总结,课件制作比赛活动总结

【www.gz85.com - 投篮比赛活动工作总结】课件制作比赛&#xff0c;是对计算机多媒体等辅助手段的一次检阅&#xff0c;也有力地促进了制作多媒体课件技艺的提高。下面是小编为您整理的“课件制作比赛活动总结”&#xff0c;仅供参考&#xff0c;希望您喜欢&#xff01;更多详细…

设置pandas显示行数_Pandas这样来设置,做数据分析舒适百倍

在日常使用pandas的过程中&#xff0c;由于我们所分析的数据表规模、格式上的差异&#xff0c;使得同样的函数或方法作用在不同数据上的效果存在差异。而pandas有着自己的一套「参数设置系统」&#xff0c;可以帮助我们在遇到不同的数据时灵活调节从而达到最好的效果&#xff0…

深度解析京东个性化推荐系统演进史

在电商领域&#xff0c;推荐的价值在于挖掘用户潜在购买需求&#xff0c;缩短用户到商品的距离&#xff0c;提升用户的购物体验。京东推荐的演进史是绚丽多彩的。京东的推荐起步于2012年&#xff0c;当时的推荐产品甚至是基于规则匹配做的。整个推荐产品线组合就像一个个松散的…

模拟微信支付服务器测试,专栏 - 腾讯WeTest-All Test in WeTest

一、异常压测场景模拟说明&#xff1a;压测服务器具备自动完成初始化(支持快速扩缩容)&#xff0c;初始化后均已支持&#xff1a;stress 、tc等工具(不需安装)1.使用stress模拟压力(CPU/内存/IO繁忙)a.如何使用&#xff1a;cpu高负载模拟&#xff1a;stress -c 44 -t 60内存高…

网易容器云平台的微服务化实践

摘要&#xff1a;网易云容器平台期望能给实施了微服务架构的团队提供完整的解决方案和闭环的用户体验&#xff0c;为此从 2016 年开始&#xff0c;我们容器服务团队内部率先开始进行 dogfooding 实践&#xff0c;看看容器云平台能不能支撑得起容器服务本身的微服务架构&#xf…

逐鹿工具显示服务器错误连接不上怎么解决,win7系统安装逐鹿工具箱提示“error launching installer”错误的解决方法...

win7系统使用久了&#xff0c;好多网友反馈说win7系统安装逐鹿工具箱提示“error launching installer”错误的问题&#xff0c;非常不方便。有什么办法可以永久解决win7系统安装逐鹿工具箱提示“error launching installer”错误的问题&#xff0c;面对win7系统安装逐鹿工具箱…

唯品会2017年双11大促技术保障实践,全域提供25万QPS服务能力

作者简介&#xff1a;刘惊惊&#xff0c;唯品会业务架构部高级架构师&#xff0c;负责唯品会电商平台的用户系统&#xff0c;营销系统和库存系统的架构设计工作。2016年加入唯品会&#xff0c;参与了唯品会电商系统的大重构&#xff0c;负责多个核心系统的梳理和大促准备。 张…

iis7 mysql_windows 7 下搭建php开发环境(windows7+IIS7+php+mysql)

首先需要说明的是&#xff0c;基于IIS v6.0/v7.0(2008)&#xff0c;可以支持的脚本相当完整&#xff0c;不仅支持Linux无法支持的asp/asp.net&#xff0c;还可以安装php、mysql、zend实现php环境。同时&#xff0c;利用Serv-U可以实现ftp管理。操作简单&#xff0c;无需键入任何…

从核心技术到高可用实践——解密数据库深度挖掘指南

SDCC系列峰会各站在技术圈遍地花开之余&#xff0c;主办方CSDN为了更好地服务技术开发者并拓展受众&#xff0c;同步启动SDCC 2017系列之线上峰会——线上线下双管齐下&#xff0c;一举打破地域限制&#xff0c;内容为基&#xff0c;便捷加成&#xff0c;带来更友好的听众体验。…

Unity中Shader观察空间推导

文章目录 前言一、本地空间怎么转化到观察空间二、怎么得到观察空间的基向量1、Z轴向量2、假设 观察空间的 Y~假设~ (0,1,0)3、X Y 与 Z 的叉积4、Y X 与 Z 的叉积 三、求 [V~world~]^T^1、求V~world~2、求[V~world~]^T^ 四、求出最后在Unity中使用的公式1、偏移坐标轴2、把…