Collection 集合
list接口
List 接口继承自 Collection 接口,是单列集合。
list接口特点:
元素存取有序的集合
带有索引的集合
集合中可以有重复的元素
ArrayList集合
ArrayList是List的子类。
特点:元素增删慢,查找快。
// 判断某元素值是否存在 list.contains(val); list.indexof(val); // 数组转list Arrays.asList(arr); Arrays.asList(strArray); //list转数组 String[] s = list.toArray(new String[list.size()]);
LinkedList集合
LinkedList是一个双向链表,方便元素的添加、删除。
提供了大量的首尾操作的方法:
addFirst(E e) :将指定元素插入此列表的开头。
addLast(E e) :将指定元素添加到此列表的结尾。
getFirst() :返回此列表的第一个元素。
getLast() :返回此列表的最后一个元素。
removeFirst() :移除并返回此列表的第一个元素。
removeLast() :移除并返回此列表的最后一个元素。
pop() :从此列表所表示的堆栈处弹出一个元素。
push(E e) :将元素推入此列表所表示的堆栈。
isEmpty() :如果列表不包含元素,则返回true。
Set接口
set接口继承自Collection接口,set比Collection接口更加严格。
set接口特点:
元素无序(TreeSet)
元素不重复(hashCode、equals)
HashSet集合
HashSet 是 Set 接口的一个实现类,元素是不可重复的,并且元素都是无序的(即存取无序)。
根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。自定义数据类型需要重写对象中的hashCode和equals方法。
数据结构(哈希表)
LinkedHashSet集合
LinkedHashSet 是HashSet 的子类,元素唯一,存取有序
TreeSet集合
TreeSet也是 Set 接口的一个实现类,对元素进行排序,同样它也可以保证元素的唯一。
Queue队列
PriorityQueue
java优先队列,每次pop()总是输出一个按照指定规则的的元素(默认是取出最小的)。但是队列内部,并不是有序的。
//定义 PriorityQueue<Integer> list = new PriorityQueue<Integer>(); //增加元素 list.add(int) list.offer(int); //获取队首元素,但不删除 list.element(); list.peek(); //获取队首元素,且删除 list.remove(); list.poll();
Collections工具类
Collections是集合的工具类,用来对集合进行操作。
addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
shuffle(List<?> list) 打乱顺序。
sort(List<T> list) :将集合中元素按照默认规则排序。
sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排
Collections.addAll(list, 5, 222, 1,2); System.out.println(list); //排序方法 Collections.sort(list); System.out.println(list);//结果[1, 2, 5, 222]
Comparator接口
//创建学生类、学生对象进行排序 Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o2.getAge()‐o1.getAge();//以学生的年龄降序 } });
Comparable接口
//创建学生类、学生对象进行排序 public class Student implements Comparable<Student>{ .... @Override public int compareTo(Student o) { return this.age‐o.age;//升序 } }