微信公众号:Java患者
专注Java领域技术分享
集合
数组和集合存储引用数据类型,存的都是地址值
数组和集合的区别
数组长度是固定的,不能自动增长
集合的长度是可变的,可以根据元素的增加而增长
数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值
集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象
区别1
区别2
集合框架 Vector跟List的特点
ArrayList
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector
相对ArrayList查询慢(线程安全)
相对LinkedList增删慢(数组结构)
LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
泛型
泛型概述
通过参数化类型来实现在同一份代码上操作多种数据类型的技术
泛型好处
提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦
Set
HashSet原理
当HashSet调用add()方法存储对象的时候,先调用对象的hashCode()方法得到一个哈希值,然后在集合中查找是否有哈希值相同的对象
如果没有哈希值相同的对象就直接存入集合
如果有哈希值相同的对象,就和哈希值相同的对象逐个进行equals()比较,比较结果为false就存入,true则不存
将自定义类的对象存入HashSet去重复
类中必须重写hashCode()和equals()方法
hashCode()属性相同的对象返回值必须相同,属性不同的返回值尽量不同
equals() 属性相同返回true,属性不同返回false。返回false的时候存储
LinkedHashSet
可以保证怎么存就怎么取
TreeSet
特点 TreeSet是用来排序的,可以指定一个顺序,对象存入之后会按照指定的顺序排列
自然顺序(Comparable)
TreeSet类的add()方法中会把存入的对象提升为Comparable类型
调用对象的compareTo()方法和集合中的对象比较
根据compareTo()方法返回的结果进行存储
比较器顺序(Comparator)
创建TreeSet的时候制定一个Comparator
如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序
add()方法内部会自动调用Comparator接口中的compare()方法排序
调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数
两种方式的区别
TreeSet构造函数什么都不传,默认按照类中Comparable的顺序
TreeSet如果传入Comparator,就优先按照Comparator
Map
map接口概素
将键映射到值的对象
一个映射不能包含重复的键
每个键最多只能映射到一个值
Map接口跟Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
HashMap跟Hashtable的区别
Hashtable是JDK1.0版本出现的,是线程安全的,效率低
HashMap是JDK1.2版本出现的,是线程不安全的,效率高
Hashtable不可以存储null键跟null值,HashMap可以存储null键跟null值
资料 · 福利
回复 【Java】即可获取最新零基础Java视频资料
回复 【激活】即可获取IDEA、datagrip等系统激活方式
回复 【面试题】即可获取Java技术相关面试题
往期 · 精彩
专注分享Java技术,跟我一起学习吧
长按识别二维码关注