Java集合基础

Java的4大接口

1、Collection:顶级集合接口,其下有List和Set两大接口。

2、List:存储有序的、不唯一的数据。

3、Set:存储无序的、唯一的数据。

4、Map:以键值对的形式存储数据,以键取值。键不能重复,但值可以重复。

List接口

是一个有序集合,继承自Collection接口。现已知常用实现类有:ArrayList、LinkedList、Vector。

1、ArrayList实现了一个长度可变的数组,在内存空间中开辟一串连续的空间。

2、LinkedList使用链表结构存储数据,在插入和删除元素是速度非常快。

3、Vector实现了一个动态数组,它是同步访问的。

如何遍历List

1、for循环。

2、foreach遍历。

for(type element: array) {
    System.out.println(element);
}

3、使用迭代器遍历列表。

Set接口

是一个无序集合,继承自Collection接口。现已知常用实现类有:HashSet、LinkedHashSet、TreeSet。

1、HashSet:底层是HashMap的相关方法,传入数据后,根据数据的hashCode进行散列运算,得到一个散列值后再进行运算,确定元素在序列中存储的位置。所以,使用HashSet存数据必须在实体类中重写hashCode和equals方法!!

2、LinkedHashSet:在HashSet的基础上,新增了一个链表。用链表来记录HashSet种元素放入的顺序;HashSet依然是无序的,但链表会按照存入的顺序存储。

3、TreeSet:将存入的数据,进行排序,然后输出。如果传入的是一个实体对象,那么需要传入比较器:实体类实现Comparable接口,并重写CompareTo方法。

Map接口

它以键值对的形式存储数据,键不能重复,值可以重复。常用实现类有:HashMap、HashTable、LinkedHashMap、TreeMap。

1、LinkedHashMap:可以使用列表,记录数据放入的次序,输出的顺序与放入的顺序一致。

2、TreeMap:根据键的顺序,进行排序后输出。如果传入的是实体对象,必须重写比较函数。

HashMap和HashTable的区别

1、HashTable是线程安全的,HashMap是线程不安全的。

2、HashTable的键不能为null,HashMap的键可以为null。

3、HashTable继承自Dirctionary抽象类,HashMap继承自AbstractMap类。

4、扩容大小:HashTable两倍加一,HashMap两倍。

5、初始容量:HashTable为11,HashMap为16。

原文地址:https://www.cnblogs.com/feiqiangsheng/p/12465746.html