集合
数组的局限性:
1.创建数组必须指定长度,长度一旦指定就不能改变;
2.一个数组中只能存放一种数据类型的数据。
集合就是特殊的数组:
1.集合创建无需指定长度,长度可以动态改变;
一个集合中可以存储多种数据类型的数据。
所有集合类都实现了java.util.Collection接口。
Collection接口有两个主要的子接口:List和Set。
List集合和Set集合的区别:
List和Set都是Collection的子接口,都表示集合;
List接口下的集合元素有序且可以重复;
Set接口下的集合元素无序且不可重复。
HashSet集合
ArrayList集合
ArrayList和LinkedList的区别
ArrayList和LinkedList都是List接口下的实现类,都是元素有序可重复的集合。
ArrayList和LinkedList不同点在于其元素的存储方式:
ArrayList集合中元素是基于数组结构的存储,元素查询和修改效率相对较高;
LinkedList集合中的元素是基于链接结构的存储,元素移除和插入效率相对较高。
ArrayList和Vector的区别
ArrayList和Vector都List接口下基于数组存储的元素有序可重复的集合。
ArrayList没实现线程同步,是线程非安全的,但效率比Vector高。
Vector实现了线程同步,是线程安全的,可直接用于多线程编程,效率较ArrayList低。
HashSet和TreeSet的区别
HashSet和TreeSet都是Set接口下元素无序且不可重复的集合。
HashSet 使用哈希表(散列)对元素进行排序;
TreeSet 使用元素的自然顺序对元素进行排序。
使用Comparator接口可以自定义集合中元素的排序规则。
映射集合
映射集合:可以存储多个键值对元素的集合。
映射集合中的key不能重复。
常见的映射集合类
所有实现了Map接口的类都是一个映射集合类。
HashMap类
Hashtable类
Hashtable的使用和HashMap保持一致,新增了keys()和elements()方法
HashMap和Hashtable的区别:
HashMap和Hashtable都是Map接口的实现类,都表示映射集合。
·HashMap允许使用null键和null值,Hashtable中不允许有null键和null值;
·HashMap没有实现线程同步,是线程非安全的;Hashtable实现了线程同步,是线程安全的,可直接用于多线程编程;
·在Hashtable新增了keys()和elements()方法,可以通过枚举遍历映射集合中的key和value。
Properties类
1.属性映射集合,其key和value都是String类型
2.对于Properties集合,使用setProperty及getProperty方法添加键值对/根据key取value
3.Properties提供了load和store方法,用于读取属性文件数据/将数据写入数据文件