(排序规则:就是实现Comparable<T>接口,实现接口的抽象方法compartTo(T o))
(八大基本元素对应的类都有排序规则)
掌握:
List(接口)
ArrayList(实现类)(实际开发用的多)(查询多)(底层为数组)
LinkedList(实现类)(更新多)(底层为链表)
相同点:
1.功能相同2.顺序与加入顺序相同(顺序一定)3.有下标,可手动排序4.同一元素可加入多次5.元素可无排序规则,有规则的可手动sort()排序,无规则的不能手动sort()方法6.可使用Collections.sort(list)方法(顺序)排序(以ASCII码排序)
必要条件:list所属类必须实现Comparable接口且要实现其抽象方法compare(T o);Collections.reverse(list);(倒序排序)Collections.shuffle(list);(洗牌)
compare(T o);方法是用于实现排序规则的(这是一个回调方法,当前对象、参数所代表的对象,共两个对象)
不同点:
ArrayList
底层为数组,适用于查询
LinkedList
底层为链表,适用于数据更新(修改,添加,删除)
这两个实现类都只有List接口的抽象方法的实现-->完全可以使用List去引用
Set(接口)
HashSet(实际开发用的多)
TreeSet
1.
相同点:
1)没有下标2)方法相同(功能不同)3)不可手动排序4)元素顺序与加入顺序无关5)同一元素不可加入多次
2.
不同点:
1)HashSet:
元素顺序不可测,与加入顺序无关(与数学上的集合概念一样),对元素无要求,底层是Hash算法,所以查询速度快(没有ArrayList快)
2)TreeSet:
元素顺序与元素的排序规则有关,对元素有要求,即要求元素必须有排序规则,底层算法是树,查询慢,插入快
Map(接口)
HashMap
TreeMap
(两个的底层与Set中的一样,实际上HashSet的底层是HashMap,HashMap的底层是Hash算法;
TreeSet的底层是TreeMap,TreeMap的底层是二叉树)
1.
相同点:
1)元素都是键值对
2)没有下标3)方法相同(功能不同)4)不可手动排序5)元素顺序与加入顺序无关6)同一元素不可加入多次
2.
不同点:
1)HashMap:
元素顺序不可测,与加入顺序无关(与数学上的集合概念一样),对元素无要求,底层是Hash算法,所以查询速度快(没有ArrayList快)
2)TreeMap:
元素顺序与元素的键的排序规则有关,对元素的键有要求,即要求元素的键必须有排序规则,底层算法是树,查询慢,插入快