java 类集合_java集合类详解

一、集合类与数组的区别

1.集合的长度可变,数组的长度固定;

2.集合用来存放对象引用,数组用来存放基本类型的数据;

二、集合类的关系

d1c1d5f3480f28b480699d74d3ac0a60.png

1.Collection接口

存储一组不唯一、无序的对象。

2.List接口

存储一组不唯一、有序(插入顺序)的对象。

2.1 实现类:ArrayList类、LinkedList类

ArrayList类:实现长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率较高。

4f1732c79d2e9f9195f91ccfb428199a.png

add()  addAll()  clear()  size()  iterator()  get()  set()

LinkedList类:采用链表存储方式,插入、删除元素时效率较高。

09d281c103295d4ebabe99db8e4d9c50.png

add()  addAll()  addFirst()  addLast()  clear()  remove()  size()  iterator()  get()  set()

3.Set接口

存储一组唯一、无序的对象。

唯一性:在添加对象时,会先采用对象的equals()方法与当前已有的对象的HashCode进行比较(重写了equals()方法的除外),如果没有相同的对象,则添加新的对象。

无序性:没有get()方法,无法通过下标遍历Set集合。

遍历set集合方法:

3.1 通过迭代器Iterator

public static voidmain(String[] args){

Set set= newHashSet();

set.add("c");

set.add("a");

set.add("c");

set.add("b");

Iterator it =set.iterator();while(it.hasNext()) {

String str=(String) it.next();

System.out.print(str + " ");

}

}

输出结果:a b c

3.2 增强型for循环

public static voidmain(String[] args) {

Set set = new HashSet();

set.add("c");

set.add("a");

set.add("c");

set.add("b");for(Object obj : set) {

String str=(String) obj;

System.out.println(str);

}

}

输出结果:a b c

4.Map接口

8ef574dcc81ed92aecfaad011715b1a5.png

存储一组键值对象,提供key到value的映射。

输出所有的key值:keySet()方法,返回键的Set视图;

输出所有的values值:values()方法,返回值的Collection视图;

获得所有的键值对:entrySet()方法,返回键值对的Set视图。

public static voidmain(String[] args) {

Map map = new HashMap<>();

map.put("java", "课堂学习");

map.put("Html", "视频学习");//获得所有键值对的集合

Set> entrySet =map.entrySet(); // 集合中对象的类型为Map.Entry

// 方法一:通过增强型for循环for(Map.Entry entry : entrySet) {

String key=entry.getKey().toString();

String value=entry.getValue().toString();

System.out.println(key+ "---" +value);

}

// 方法二:通过迭代器Iterator

Iterator> it1;

it1 = entrySet.iterator();

while(it1.hasNext()){

Map.Entry me = it1.next();

String key1 = me.getKey();String value1 = me.getValues();

System.out.println(key1 + "---" + value1);

}Iteratorit;

System.out.println("key值:");//获得所有键的集合

Set set =map.keySet(); // 集合中对象的类型为String

it=set.iterator();while(it.hasNext()) {

System.out.print(it.next()+ "\t");

}

System.out.println("\nvalues值:");//获得所有值的集合

Collection coll =map.values(); // 集合中对象的类型为String

it=coll.iterator();while(it.hasNext()) {

System.out.print(it.next()+ "\t");

}}

4.1 实现类

HashMap、Hashtable、LinkedHashMap和TreeMap

HashMap

HashMap是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可以重复,所以HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null,是非同步的。

Hashtable

Hashtable与HashMap类似,是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢,它继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低。

ConcurrentHashMap

线程安全,并且锁分离。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

LinkedHashMap

LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。

TreeMap

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的。

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

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

相关文章

英特尔宣布推出“Nervana”神经网络处理器

原作者&#xff1a;Ryan Whitwam 译者&#xff1a;彭婷 概要&#xff1a;Nervana NNP就是基于这种计算设计的。这也是所谓的专用集成电路&#xff08;ASIC&#xff09;&#xff0c;所以它无法应用于一般的计算任务。 科幻小说家和现代科技大型公司一致认为AI可以开辟出一条康庄…

java爬取button_学习使用Java的webmagic框架爬取网页内容

(一)使用前的配置&#xff1a;2&#xff0c;(1)添加依赖&#xff1a;us.codecraftwebmagic-core0.7.3us.codecraftwebmagic-extension0.7.3us.codecraftwebmagic-selenium0.7.3(2)从GitHub官网下载webmagic的压缩包(https://codeload.github.com/code4craft/webmagic/zip/maste…

异构智能吴韧:物联网是“伪命题”?智联网才是未来

概要&#xff1a;“咨询机构预测&#xff0c;在未来人工智能的市场上12%的比例的资金将用在人工智能芯片上。”吴韧表示&#xff0c;异构智能瞄准的就是人工智能本地芯片市场。 Novumind异构智能&#xff08;以下简称异构智能&#xff09;在火热的人工智能新闻里出现的次数屈指…

java栈编程题_Java实现栈和队列面试题

面试的时候&#xff0c;栈和队列经常会成对出现来考察。本文包含栈和队列的如下考试内容&#xff1a;(1)栈的创建(2)队列的创建(3)两个栈实现一个队列(4)两个队列实现一个栈(5)设计含最小函数min()的栈&#xff0c;要求min、push、pop、的时间复杂度都是O(1)(6)判断栈的push和p…

联合国《2017年信息经济报告》

来源&#xff1a;联合国 概要&#xff1a;数字经济已经深入到了人们生活的衣食住行等所有方面&#xff0c;其发展速度和方式超出人们的想象。数字经济将把人类带往何方&#xff1f;这还是一个难解的谜题。 数字经济已经深入到了人们生活的衣食住行等所有方面&#xff0c;其发展…

java链表list_java自定义List链表

第一步&#xff1a;定义一个List接口&#xff0c;规定一些基本操作package my.stack;public class Node {private T data;private Node next;public Node(){data null;next null;}public Node(T data){this.data data;this.next null;}public Node(T data, Node next){this…

Amazon、Google、 Microsoft和IBM如何将人工智能作为一项服务出售

译者&#xff1a;李凌 概要&#xff1a;Alphabet、Amazon和Microsoft这几家公司都发现&#xff0c;在产品中植入人工智能后能让产品变得更加优秀&#xff0c;他们可以将这种做法转变成一项服务&#xff0c;然后作为一种基于蓬勃发展的云计算业务的增值服务出售给企业客户。 云计…

java炸弹人素材_炸弹人图片_炸弹人模板_炸弹人设计素材下载

[{"id":658285,"url":"https://www.tooopen.com/view/658285.html","title":"英雄联盟全员高清游戏壁纸海报图片素材","imgthumb":"http://img05.tooopen.com/images/20140711/tooopen_sl_010800932879.jpg&…

CB Insights发布2017全球AI企业100强,出门问问、碳云智能入选

来源&#xff1a;亿欧 概要&#xff1a;在美国加州圣芭芭拉举办的创新峰会&#xff08;TheInnovation Summit&#xff09;上&#xff0c;CB Insight的CEO Anand Sanwal揭晓了全球2017 AI100名单&#xff0c;评选出全球最有创新实力的100家AI公司&#xff0c;国内公司出门问问、…

Java树形转扁平_js把树形数据转成扁平数据

我就直接上代码了都是实际项目里面用到的1.假设这个json就已经是树型结构数据了(如果不知道怎么实现树型结构数据请看我另一篇博客)var compressedArrafcommon.treeDataToCompressed(json);/*******************************JS封装好的方法***********************************…

定位AI交互技术服务商,声智科技完成近亿元A轮融资,将拓展安防、汽车等新场景

来源&#xff1a;36Kr 摘要&#xff1a;“语音交互是人工智能相关技术的重要应用场景&#xff0c;而语音交互的核心和关键突破点在于远场。而国内真正有实力做好远场技术的团队是非常稀少的。” 定位人工智能交互技术服务商的声智科技&#xff08;SoundAI&#xff09;&#xff…

java http超时重连_httpclient 重连机制

我们在进行http请求时&#xff0c;难免会遇到请求失败的情况&#xff0c;失败后需要重新请求&#xff0c;尝试再次获取数据。Apache的HttpClient提供了异常重试机制&#xff0c;在该机制中&#xff0c;我们可以很灵活的定义在哪些异常情况下进行重试。今天有个小伙伴&#xff0…

德国电信:5G有重复3G命运的风险!

来源&#xff1a;5G 摘要&#xff1a;德国电信&#xff1a;5G有重复3G命运的风险&#xff01; 行业深度观察

java 改装电动_java 数组

数组&#xff1a;数组是同意变量的集合&#xff0c;不仅可以是基本数据类型&#xff0c;也可以是类的对象集合。数组的缺点就是定长&#xff0c;不能随时扩张&#xff0c;所以一般是确定个数时用&#xff0c;不确定时一般用集合。优点就是可以一下子定义多个相同类型的数据。使…

DARPA发布产业振兴计划,继承摩尔智慧

来源&#xff1a; 传感器与物联网 摘要&#xff1a;高登摩尔(Gordon Moore)赖以成名的摩尔定律(Moores law)几十年来一直引导着产业的发展&#xff0c;也为DARPA日前发布的“电子产业振兴计划”(ERI)计划附加条例提供许多想法。 根据美国国防部先进研究计划署(DARPA)微系统技术…

java没通过测试_我们应该把没有通过测试的故事回退到“开发”状态吗

Eric Willeke在思考&#xff1a;任务看板上的那些没有通过测试的用户故事&#xff0c;该怎么处理呢&#xff1f;应该把它回退到“开发”状态&#xff0c;还是保留“测试中”的状态&#xff1f;他提出了一些不同的方案&#xff1a;● 一个方法是把开发和测试状态合并为“完成”状…

图解全球无人驾驶产业链:这些公司在主宰人类出行的未来

来源&#xff1a;战略前沿技术、华尔街见闻 摘要&#xff1a;与通常的报告不同&#xff0c;Comet Labs图表集合了整个产业链。 无人驾驶技术可以算是如今硅谷创投中最火的名词。作为人工智能的终极场景&#xff0c;无人驾驶技术已经成为了许多创业公司和投资者参与AI的机会。 …

java9默认收集器_Oracle提议将G1作为Java9的默认垃圾收集器

Oracle正在考虑将 JEP 248 包含到 Java 9的JEP列表 中&#xff0c;即在服务器配置中将G1作为默认垃圾收集器。该决定在Java社区引发了一些争Oracle正在考虑将 JEP 248 包含到 Java 9的JEP列表 中&#xff0c;即在服务器配置中将G1作为默认垃圾收集器。该决定在Java社区引发了一…

2017全球最具影响力机器人公司TOP排行榜

来源&#xff1a; Future智能 摘要&#xff1a;全球最有影响力的 50 家机器人行业上市公司和非上市公司名单。 近日&#xff0c;美国《机器人商业评论》公布了它们的第六个年度「RBR50 名单」&#xff0c;即 2017 年《机器人商业评论》认为最值得关注、全球最有影响力的 50 家机…

java打开别人的代码报错_同样的代码,别人的可以运行我的报错,求解答

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼public class Override{public static void main(String[ ] args){//创建两个实例Cat cat1new Cat(); ①cat1.cry();Dog dog1new Dog(); ②dog1.cry();}//动物类class Animal{int age;String name;//动物都会叫&#xff0c;行为pub…