目录
Collenction
ollection集合概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也被称为Collection的元素
- JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
- 多态的方式
- 具体的实现类ArrayList
常用方法
List
1 List集合概述和特点
概述:
- 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访元素,并搜索列表中的元素
特点:
- 有序:存储和取出的元素顺序一致
- 可重复:存储的元素可以重复
2 List集合特有方法
3 并发修改异常
ConcurrentModificationException
产生原因
- 迭代器遍历的过程,通过集合对象修改了集合中的元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致
解决方案
- 用for循环遍历,然后用集合对象,做对应的操作即可
4 ListIterator列表迭代器
- 通过List集合的ListIterator()方法得到,所以说它是List集合特有的迭代器
- 用于允许程序员沿任一方法遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
ListIterator中常用方法
- E next():返回迭代中的下一个元素
- boolean hasNext():如果迭代具有更多元素,则返回true
- E previous():返回列表中的上一个元素
- boolean hasPrevious():如此列表迭代器在相反方向编列列表是具有更多元素,则返回true
- void add(E e):将指定元素插入列表
5 List集合子类特点
常用子类:ArrayList,LInkedList
- ArrayList:底层数据结构是数组,查询快,增删慢
- LinkedList:底层数据结构是链表,查询快,增删慢
6 Linked List集合的特有功能
ArrayList集合
1 集合概述
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。
集合类有很多,如ArrayList。
ArraList<E>:
- 可调整大小的数组实现。
- <E>:是一种特殊的数据类型,泛型。
用法:
在出现E的地方使用引用数据类型替换即可
举例:ArrayList<String>,ArrayList<Student>
2 ArrayList构造方法和添加方法
方法名 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index, E element) | 在此集合中的指定位置插入指定的元素 |
如:
ArrayList<String> array = new ArrayList<>(); //创建一个String类型集合
3 ArrayList集合常用方法
如:
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("hello");
arrayList.add("java");
System.out.println(arrayList.get(0));
System.out.println(arrayList.get(1));;
4 案例(存储字符串并遍历)
需求:创建一个存储字符串的集合,存储3个字符串元素,使程序实现在控制台遍历该集合
代码如下:
ArrayList<String> arrayList = new ArrayList<>(); //创建一个String类型集合
arrayList.add("张三"); //arrayList集合添加一个"张三"字符串
arrayList.add("李四"); //arrayList集合添加一个"李四"字符串
arrayList.add("王五"); //arrayList集合添加一个"王五"字符串
for (int i = 0; i < arrayList.size(); i++) { //遍历arrayList集合
System.out.println(arrayList.get(i));
}
set
1 特点:
- 不包含重复元素的集合
- 没有带索引的方法,索引不能使用普通for循环遍历
hashSet:对集合的迭代顺序不作任何保证
2 哈希值
哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
Object类中有一个方法可以获取对象的哈希值
- public int hashCode():返回对象的哈希码值
对象的哈希值特点
- 同一个对象多次调用hashCode()方法返回的哈希值是相同的
- 默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同
3 HashSet 集合概述和特点
特点:
- 底层数据结构是哈希表
- 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通for循环遍历
- 由于是Set集合,所以是不包含重复元素的集合
4 LinkedHashSet集合概述和特点
特点:
- 哈希表和链表实现的Set接口,具有可测的迭代次序
- 由链表保证元素有序,也就是说元素的存储和取出顺序是一致的
- 由哈希表保证元素唯一,也就是说没有重复的元素
5 TreeSet集合概述和特点
特点:
- 元素有序,这里的顺序不是值存储和取出的顺序,而是按照一定的规则,具体排序方式取决于构造方法
TreeSet():根据其元素的自然排序进行排序
TreeSet(Comparator comparator):根据指定的比较器进行排序 - 没有带索引的方法,所有不能使用普通for循环遍历
- 由于是Set集合,所有不包含重复元素的集合
6 自然排序Comparable的使用
例如:
7 比较器排序Comparator的使用
例如: