学习阿里巴巴开发手册-5

1.关于hashCode和equals方法处理原则

 1)只要重写equals,就必须重写hashCode

 2)set存储的对象必须重写hashCode和equals方法

 3)自定义对象作为Map的键,必须重写hashCode和equals方法

 4)String重写了hashCode和equals方法。所以直接使用String对象作为key使用

2.ArrayList的subList结果不可强转出ArrayList,例如ArrayList<String> rl=(ArrayList)list.subList(0, 1);

  否则抛异常java.lang.ClassCastException: java.util.ArrayList$SubList cannot be cast to java.util.ArrayList

   返回的是ArrayList的内部类SubList它是ArrayList的一个视图,对SubList子列表的所有操作最终会反应到原列表上。

3.高度注意对原集合元素个数修改,会导致子列表的遍历,增,删的抛出的异常。

4.集合转数组的方法必须使用集合的toArray(T[] array),

 如果使用toArray()返回Object[]类,强转时出现错误
   例如:String[] array = new Stirng[list.size()];

              array=list.toArray(array)

5.工具类

   String[] sarray = new String[]{"YOSD","SDFDS"};
   List alist =Arrays.asList(sarray);  不能使用修改集合方法
   1)alist.add("dsf");出现异常Exception in thread "main" java.lang.UnsupportedOperationException
   此方法体现适配器模式,是转化接口,后台数据还是数组。
   2) sarray[0]="chia",list,get(0)所之改变

6 泛型通配符<? extends T>来接收返回的数据,此泛型集合不能使用add方法  使用频繁往外读取内容。
  泛型通配符<? super T> 不能使用get方法,接口调用赋值时易出错。 适合经常往里插入

7.不要在foreach循环里进行元素remove/add操作,请使用Iterator方式
8.Compatator满足三个条件
  1)x,y比较结果和y,x比较结果相反
  2)x>y , y>z 则 x>z
  3) x=y 
  JDK7+  Array/Collections的sort才可以使用。
9.集合初始化时,指定集合初始值大小
  无法确认时 为16  否则是 (存储元素个数/负载因子)+1,可以提高性能
10.推荐使用entrySet遍历Map类集合KV,效率高,遍历一遍
   而keySet方式遍历两遍
   JDK8,使用Map.foreach方法
11 图片

12 有序性sort 指遍历结果是按照某种比较规则依次排列的
   稳定性stability  集合每次遍历的元素次序一定
   ArrayList 是stability/unsort
   HashMap是unstability/unsort
   TreeMap是stability/sort
13 利用Set元素唯一特性,快速对集合元素去重操作
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章