A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 122125241 中级黑马   /  2015-7-11 01:42  /  626 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.   collection 总集合

  2.   1:List 是一个有序的集合.可重复

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

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

  5.   a:添加

  6.   public void addElement(E obj)        --    后期被add()替代

  7.   b:获取

  8.   public E elementAt(int index)        --    后期被get()替代

  9.   c:遍历

  10.   public Enumeration elements()    --  后期被iterator()替代

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

  12.   LinkedList 对顺序访问进行优化,向List 中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列.

  13.   2:Set无序 唯一.------加入Set 的Object必须定义equals()方法

  14.   使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().

  15.   2.1:HashSet保证唯一的方法:

  16.   为快速查找而设计的Set ,存入HashSet对象必须定义hashCode().

  17.   String类型的可以直接判断,通过首字母的哈希值自动排列

  18.   如果是引用数据类型.可以重写对象比较的Equals方法和HashCode方法

  19.   2.1.1:LinkedHashSet 底层数据结构是一个哈希表和链表,由链表保证顺序,由哈希表保证数据的不可重复性

  20.   打印是按照添加的顺序来打印,没有了

  21.   2.2treeSet底层数据结构是一个红黑树

  22.   如何保证集合顺序  由自然排序

  23.   就是引用数据类型的类中自己写有比较的算法(Comparator接口的重写:先继承接口,然后重写接口中的方法)

  24.   set在添加的时候会判断是否相同  相同就不添加,不同就添加

  25.   集合自己排序

  26.   这个是采用集合自己判断,方法是:采用匿名内部类的方法重写接口Comparator的方法,然后在创建集合对象时放入集合中

  27.   如何保证唯一性:

  28.   看返回值的大小,如果返回值大于0就是从大到小

  29.   如果小于0 也是从大到小,

  30.   如果等于0 ,两个集合元素相同,不添加

  31.   重写Comparator的方法

  32.   先看treeSet的comparator的方法public Comparator comparator()

  33.   返回值类型是一个Comparator的接口类型,因为直接返回的就是一个0,所以需要重写接口方法,点击进入接口查看abstract的方法只有两个

  34.   我们需要重写compare的方法即可

  35.   public int compare(T o1,T o2){

  36.   int result = o1.getAge() - o2.getAge();

  37.   if (result == 0) {

  38.   result = o1.getNameString().compareTo(o2.getNameString());

  39.   }

  40.   return result;

  41.   }

  42.   判断结果即可

  43.   集合自己排序:

  44.   new comparator<>(){

  45.   public int compare(T o1,T o2){

  46.   int result = o1.getAge() - o2.getAge();

  47.   if (result == 0) {

  48.   result = o1.getNameString().compareTo(o2.getNameString());

  49.   }

  50.   return result;

  51.   }//重写接口的方法

  52.   };

  53.   3:针对Collection集合我们到底使用谁呢?(掌握)

  54.   唯一吗?

  55.   是:Set

  56.   排序吗?

  57.   是:TreeSet

  58.   否:HashSet

  59.   如果你知道是Set,但是不知道是哪个Set,就用HashSet。

  60.   否:List

  61.   要安全吗?

  62.   是:Vector

  63.   否:ArrayList或者LinkedList

  64.   查询多:ArrayList

  65.   增删多:LinkedList

  66.   如果你知道是List,但是不知道是哪个List,就用ArrayList。

  67.   如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。

  68.   如果你知道用集合,就用ArrayList。
复制代码


3 个回复

倒序浏览
正是我所需要的,我们正好学到这
回复 使用道具 举报
很好,总结的很到位
回复 使用道具 举报
:victory::victory:同勉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马