在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再一一个类的形式提供。集合类可以在里面保存多个对象的类,不同的集合类有不同的功能和特点。这里就和大家介绍一下再使用集合类各种容器的时候,必须注意的相关细节。

1、迭代器:
迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。
也就是在迭代循环中调用一次next方法一次就要hasNext判断一次,比如语句。
sop(it.next()+"..."+it.next())会发生上述异常。迭代器的next方法返回值类型是Object,所以要记得类型转换,应用泛型后就不用强转。
2、List集合:
List集合里面的元素因为是带角标,所以List集合里面的元素都是有序的,另外List集合可以包含重复元素,也可以包含null。
List集合有迭代器Iterator,还有一个特有迭代器列表ListIterator。
List集合中判断元素是否相同都是用equals方法,无论contains、remove都依赖equals方法,比如往ArrayList集合里面存放学生,同名同年龄视为同一个人,此时就需要在学生类复写Object类里面的equals方法(非常重要!!!要注意!!)。
3、Set集合:
Set接口里面存放的是元素是无序的,不可以有重复元素,可以包含null。
Set集合只有一种取出方式,就是迭代器Iterator。
Set集合功能和Collection是一致的,没有特殊方法。
3.1、HashSet:
集合里面存放的元素是无序的,唯一的。
底层数据结构是哈希表,哈希表结构的数据都是无序的,哈希表结构的操作效率都高效。
线程不同步。
保证元素唯一性的原理是:通过复写hashCode和equals方法。
如果两元素的hashCode值相同,则继续判断两元素equals是否为真。
如果两元素的hashCode值不同,则不会调用equals方法。
当我们往HashSet集合存放自定义的元素时(比如学生对象),通常都要复写hashCode和equals方法,而且hashCode和equals方法不通过我们调用,HashSet集合底层内部自己调用,自己拿元素去比较。
3.2、TreeSet
TreeSet集合可以对存放的元素进行排序,弥补了Set集合元素无序的缺点,且元素是唯一的。
底层数据结构是二叉树,二叉树结构都是有序的。
线程不同步。
TreeSet集合要求往集合里存放的元素自身具备比较性,否则会报错。
TreeSet集合保证元素唯一性的依据是:通过compareTo或者compare方法中的来保证元素的唯一性。TreeSet排序的第一种方式:让元素自身具备比较性,
定义元素类实现Compareble接口,覆盖compare方法,此方式是元素的自然顺序。
TreeSet排序的第二种方式:让集合具备比较性当元素自身不具备比较性或者具备的比较性不是我们所需要的比较性时,此时就需要让集合具备自定义的比较性。
4、Map集合:
4.1、Hashtable
底层是哈希表结构线程安全的,并且键和值不能为null。
4.2、HashMap
底层是哈希表结构线程不安全的,键和值可以为null。
4.3、LinkedHashMap
底层是链表和哈希表线程不安全
4.4、TreeMap
底层是二叉树线程不安全的
有开发经验的同学都知道,尤其在编程开发工作中,任何一个细节的疏忽都会造成整个程序运行出现问题。所以博学谷小编提醒大家,无论是学习还是工作中,都要注意这些细节问题的积累与总结,这样才能避免问题重复出现,或者在出现问题时快速响应并解决问题。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
MySQL数据库优化可以从哪些方面入手?具体怎么做?
MySQL数据库优化可以从哪些方面入手?具体怎么做?一般我们主要从优化SQL语句、优化数据库结构、优化Mysql服务器等几方面入手,而优化SQL语句又可以分为优化查询语句和其他执行语句;数据库结构也可以从字段类型、字符编码、适当拆分、增加冗余和数据库表来做优化;至于优化Mysql服务器就更简单了,需要遵循一定的优化原则即可。现在我们来看看具体的优化方案吧!
6074
2019-10-24 15:26:42
Java开发中并发工具类有哪些?如何学习?
并发编程不但能大大提高代码的执行效率,也可以提高用户体验的好感度。Java编程语言中,在JDK的并发包中提供了几个非常实用的并发工具类。其中CountDownL _atch、CyclicBarrier、Semaphore工具类提供了并发编程流程控制的手段,Exchanger工具类则提供了在线线程间的交换数据的手段。下面小编就为大家详细介绍一下这些并发工具类。
6527
2019-11-08 18:42:57
Java程序员Dubbo面试题整理附答案
Dubbo作为国内最主流和常见的分布式服务框架,是Java程序员必须要熟练掌握的框架。虽然Consul正在崛起,但Dubbo又开始重新更新,因此目前市场上仍有不少公司使用Dubbo。在Java岗位的面试中,Dubbo更是会被经常问到的技术难点,因此无论你在哪家公司面试,都必须熟悉Dubbo的相关知识点。本文为大家整理了一些Java程序员常见的Dubbo面试题,并附上了参考答案,一起来做做吧!
5938
2020-04-15 17:19:27
怎么学好Java?有哪些建议?
Java可以说是目前应用最广、最受开发者青睐的编程语言,一些编程小白常常把Java作为入门学习编程的首选语言。那么,大家常常会问这样的问题:怎么学好Java?有哪些建议?其实学习Java没有许多人想的那么困难,但是的确也不简单,需要大家不断地去钻研学习。下面是一些关于学习Java的具体意见,大家在学习的过程中如果能做到以下几点,相信学好Java指日可待。
5400
2020-04-21 10:24:32
高级Java 程序员要掌握哪些职业技能?
要学习Core Java、多线程并发编程、I/O、JVM、设计模式、常用数据库JavaWeb开发的框架、Netty 等基础知识,Netty 简单易用容易上手,但网络编程复杂,会存在各种的状况和可能性。
4654
2020-10-23 15:45:43
