数据结构_List_Set_Collections
数据结构
栈、队列
数组
链表
红黑树
哈希表
List的子类
list是Collection集合的子类,主要特点有
1,有序:储存进去的元素都是有顺序的;
2,有索引:可以通过索引精确的查找某一个元素;
3,可重复:元素内容允许重复;
public void add(int index, E element) 添加元素到指定的位置,索引后面元素向后移一位;
public E get(int index) 返回指定索引的元素;
public E remove(int index) 移除指定索引的元素;
public E set(int index, E element) 指定索引替换元素;
ArrayList:
底层实现:数组 所以查询快,增删慢;
LinkedList:
底层实现:链表 所以查询慢,增删快:
特有方法
public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
Set的子类
Set集合也是Collection集合的子类 主要特点有:
1,无序;
2,无索引;
3,不重复;
HashSet
底层:哈希表 储存的对象需要重写equals和hashCode保证存储的唯一性
LinkedHashSet
底层:哈希表+链表 存储是有序的
可变参数
格式:修饰符 返回值类型 方法名(参数类型... 形参名){ }
Collections
单列集合的工具类,常用方法有如下:
public 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> ) 将集合中的的元素按照指定规则排序
比较器
要么实现Comparable<T>的CompareTo方法进行比较
要么使用匿名内部类的方式new Comparetor进行比较
例如:
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 年龄降序
int result = o2.getAge()‐o1.getAge();//年龄降序
if(result==0){//第一个规则判断完了 下一个规则 姓名的首字母 升序
result = o1.getName().charAt(0)‐o2.getName().charAt(0);
}
return result;
}
});