java基础之集合类

时间:2024-04-01 07:12:41

集合类

为什么会出现集合类?

面向对象语言对事物的体现就是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象的最常用的一种方式。

数组和集合为什么不同?

数组虽然也可以存储对象,但长度是固定的,集合的长度是可以变的,数组中可以存储基本数据类型,但集合只能存储对象。

java基础之集合类

---List

List 特点是存入对象是有序的,即存入什么顺序,取出来就会是什么顺序。而且里面的元素是可以重复的。

List按照其底层数据存储形式可以分为ArrayList和LinkedList。前者是以级数为存储方式后者以链表为存储方式,显示前者

适合检索遍历,后者适合增加删除。

---Set

Set的特点是不包含重复元素,而且是无序的。

java基础之集合类

HashSet是底层使用哈稀表为存储方式实现的Set集合。HashSet给存入的每个对象计算出一个Hash值,然后映射出一个存储地

址。这样很容易判断出某个对象是否已经存在。试想如果用ArrayList保证对象重复会有多么麻烦。假如集合中有1万个对象,当添加

10001个对象时,需要进行10000次比较才能最后确定这个对象是否已经存在,如果存在,就不加入,如果不存在就添加进去。由

此可见HashSet在这方面的优越性。当我们的对象需要存储到HashSet中时,通常我们需要重写hashCode方法和equals方法,以

我自己的规则判断两个对象是否相等。比如,在某种特定的情况下,我们可以设定姓名和年龄都相等的两个人就是同一个人。

HashSet是非线程同步的!

TreeSet 该集合可以对Set集合中的元素进行排序,底层是使用二叉树作为数据结构。排序性能比较高!

排序的两种实现方式:

1、元素需要实现Comparable接口,覆盖compareTo方法,这种方式也称为元素的自然顺序,或默认顺序。

2、让集合具备排序能力。在创建集合的时候传入一个自定义比较器,自定义比较器要实现Comparator接口。这样就使得添加元素时集合

都会按照比较器里的要求将每次添加进的元素放到适当的位置,也就是实现的排序。

三、Map

Map是一种与Collection不同的集合,是以key/value的形式存在的。通过key找到对应的value,key就像身份证号一样需要唯一确定。

HashTable 底层是Hash表数据结构,不可以存入null作为键和null作为值的情况。Hashtable是线程同步的。jdk1.0 开始 效率低

HashMap 底导是hash表数据结构, 并允许使用null作为键和null作为值,不是线程同步的。jdk1.2开始 效率高

TreeMap 底层是二叉树作为数据结构,线程不同步,可以用于map集合中的按键排序

Set和Map很像,其实Set底层使用了Map集合

Map集合的取出原理:将map集合取出原理,将map集合转成Set集合,再通过迭代器取出。记住keySet和EntrySet方法的使用!

Map的应用-------------利用Properties类读取配置文件(框架中经常用到)

InputStream in = ReflectCollections.class.getResourceAsStream("config.properties");
Properties prop = new Properties();
prop.load(in);