数据结构_List_Set_Collections

数据结构

栈、队列

数据结构_List_Set_Collections

数组

数据结构_List_Set_Collections

链表

数据结构_List_Set_Collections

红黑树

数据结构_List_Set_Collections

哈希表

数据结构_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;
            }
        });