黑马程序员技术交流社区

标题: 集合复习 [打印本页]

作者: 122125241    时间: 2015-7-8 15:09
标题: 集合复习
  1.                                                         collection 总集合
  2. 1:List 是一个有序的集合.可重复

  3. 1.1:arrayList 没有特殊方法,底层是一个数组 查询快 增删慢,线程不安全,效率高

  4. 1.2:vector有特殊的增加和删除方法,并且集合在遍历的时候采用的是索引迭代的特殊方法,底层是一个数组,查询快 增删慢,线程安全, 但是效率低  不经常用

  5. 1.3:LinkedList底层是一个链表,查询慢  增删快 线程不安全,效率低


  6. 2:Set无序 唯一

  7. 2.1:HashSet保证唯一的方法:
  8.                 String类型的可以直接判断,通过首字母的哈希值自动排列
  9.                 如果是引用数据类型.可以重写对象比较的Equals方法和HashCode方法
  10. 2.1.1:LinkedHashSet 底层数据结构是一个哈希表和链表,由链表保证顺序,由哈希表保证数据的不可重复性
  11.                                 打印是按照添加的顺序来打印,没有了

  12. 2.2treeSet底层数据结构是一个红黑树
  13.                 如何保证集合顺序  由自然排序
  14.                                                 就是引用数据类型的类中自己写有比较的算法(Comparator接口的重写:先继承接口,然后重写接口中的方法)
  15.                                                 set在添加的时候会判断是否相同  相同就不添加,不同就添加
  16.                                         集合自己排序
  17.                                                 这个是采用集合自己判断,方法是:采用匿名内部类的方法重写接口Comparator的方法,然后在创建集合对象时放入集合中
  18.                 如何保证唯一性:
  19.                         看返回值的大小,如果返回值大于0就是从大到小
  20.                                                 如果小于0 也是从大到小,
  21.                                                 如果等于0 ,两个集合元素相同,不添加
  22.                 重写Comparator的方法
  23.                 先看treeSet的comparator的方法public Comparator<? super E> comparator()
  24.                 返回值类型是一个Comparator的接口类型,因为直接返回的就是一个0,所以需要重写接口方法,点击进入接口查看abstract的方法只有两个
  25.                 我们需要重写compare的方法即可
  26.                 public int compare(T o1,T o2){
  27.                 int result = o1.getAge() - o2.getAge();
  28.                         if (result == 0) {
  29.                                 result = o1.getNameString().compareTo(o2.getNameString());
  30.                         }
  31.                         return result;
  32.                 }
  33.                 判断结果即可
  34.                 集合自己排序:
  35.                 new comparator<>(){
  36.                         public int compare(T o1,T o2){
  37.                         int result = o1.getAge() - o2.getAge();
  38.                                 if (result == 0) {
  39.                                         result = o1.getNameString().compareTo(o2.getNameString());
  40.                                 }
  41.                         return result;
  42.                         }//重写接口的方法
  43.                 };

  44. 3:针对Collection集合我们到底使用谁呢?(掌握)
  45.         唯一吗?
  46.                 是:Set
  47.                         排序吗?
  48.                                 是:TreeSet
  49.                                 否:HashSet
  50.                 如果你知道是Set,但是不知道是哪个Set,就用HashSet。
  51.                        
  52.                 否:List
  53.                         要安全吗?
  54.                                 是:Vector
  55.                                 否:ArrayList或者LinkedList
  56.                                         查询多:ArrayList
  57.                                         增删多:LinkedList
  58.                 如果你知道是List,但是不知道是哪个List,就用ArrayList。
  59.        
  60.         如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。
  61.        
  62.         如果你知道用集合,就用ArrayList。
复制代码



作者: linqiwang    时间: 2015-7-8 15:09
还可以  有用法的介绍




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2