List集合
1、List接口介绍
- 元素存取有序的集合
- 可以有重复元素
- 一个带索引的集合,可以通过索引精确操作集合中的元素
2、List接口中常用方法
- public void add(int index,E element):
- public E get(int index):
- public E remove(int index):
- public E set(int index,E element):
3、List的子类
3.1 ArrayList集合
集合存储的结构是数组结构,元素增删慢,查找快。
3.2 LinkedList集合
集合数据存储的结构是链表结构,方便元素添加、删除的集合。
public E pop():
public void push(E e):
Set集合
1、Set接口的介绍
2、Set的子类
HashSet集合
一,简介:HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能,保证元素唯一性的方式依赖于:hashCode与equals方法。
二,存储数据的结构:数组+链表+红黑树,存储的过程???
三,存储自定义类型元素:需要重写对象中的hashCode和equals方法,建立自己的比较方法,才能保证HashSet集合中对象唯一。
LinkedHashSet集合
链表和哈希表组合的一个数据存储结构,可以实现有序。
Collections
1.1 常用功能
pulic static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素;
public static void shuffle(List<?> list):打乱集合顺序;
public static <T> void sort(List<T> list):将集合中元素按照默认规则排序;
public static <T> void sort(List<T> list,Comparator<? super T>):将集合中元素安装指定规则排序。
1.2 Comparator和Comparable
sort方法中的排序,如果我们比较的是String,那么它的默认规则是怎么定义的呢?
排序不过就是两个对象之间比较大小,Java中提供了两种比较实现的方式,一种是java.lang.Comparable接口去实现,一种是java.util.Comparator接口实现。
String类实现了Comparable接口,并重写了comparaTo方法,也就是完成了比较规则的定义。但如果我想换一种比较的规则(比方说按照最后一个字母大小升序排序),则需要修改String的源代码,显然不能实现。
但我们可以实现Comparator接口,重写里面的compare方法,定义自己的规则。使用的时候之间传进去。
比较自己定义的类,两种方法都可以,因为规则都可以自己定义。