(五)集合处理
来源:互联网 发布:入门红酒 知乎 编辑:程序博客网 时间:2024/05/29 16:42
1:关于hashCode和equals的处理,遵循如下规则
1:只要重写equals,就一定要重写hashCode的方法。因为equals相等,那么hashCode一定相等。但是如果equals不相等,hashCode也有可能相等,个人理解可能是因为hash冲突导致的。
2:Set集合存储的是不重复的对象,所以依据hashCode和equals来进行判断,这就要求Set存储的对象必须要重写这两个方法。
3:如果自定义对象作为Map的对象,则该对象必须实现hashCode和equals方法。String重写了hashCode和equals方法,所以我们可以非常愉快的使用 String对象来作为key来使用。
2:ArrayList的subList结果不可以强转成ArrayList,否则会抛出ClassCastException异常。
import java.util.ArrayList;
import java.util.List;
public class TestSubList {
public static void main(String[] args) {
List<Integer> test = new ArrayList<Integer>();
//init list
for (int i = 0; i < 5; i++) {
test.add(i); //auto boxing
}
//display the list
System.out.print("the orginal list: ");
for (int i = 0; i < test.size(); i++) {
System.out.print(test.get(i) + " ");
}
System.out.println();
//sub list
List<Integer> sub = test.subList(1, 3);//sub list contains elements: 1, 2
sub.remove(1);//remove element “2” from sub list
//display the list again
System.out.print("the orginal list after sublist modified: ");
for (int i = 0; i < test.size(); i++) {
System.out.print(test.get(i) + " ");
}
System.out.println();
}
}
在这段代码中,我们并没有改变原始列表“test”其中的元素。然而,当删除由subList方法得到的子列表中的元素时,原始列表中的该元素也被删除了。
3:在subList场景中,高度注意对原集合元素个数的修改,会导致自列表的遍历,增加,删除均会产生ConcurrentModificationException异常。
4:使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一样的数组,大小就是list.size()。
5:使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,他的add/remove/clear方法会抛出UnsupportedOperationException异常。
6:泛型通配符<? extends T>来接受返回的数据,此方法的泛型集合不能使用add方法,而<? super T>不能使用get方法,作为接口调用赋值时易出错。
7:不要在foreach循环里进行元素的remove/add操作。remove元素请使用Itrator方式,如果并发操作,需要对Iterator对象加锁。
8:在jdk7版本以上,Comparator要满足三个条件,不然Arrays.sort,Colletions.sort会报IllegalAgumentException异常。
1:x,y的比较结果与y,x的比较结果相反
2:如果x>y,y>z那么x>z。
3:x=y,那么z与x的比较结果与z与y的比较结果相同。
9:集合初始化时指定集合的初始化大小。
10:推荐使用entrySet遍历Map类集合KV,而不是entrySet方式遍历集合。
11:高度注意map类集合K/V能否为空的各种情况
Hashtable key不允许为null value不允许为null super是Dictionary 线程安全
ConcurrentHashMap key不允许为null value不允许为null super是AbstractMap 锁分段技术
TreeMap key不允许为null value允许为null super是AbstractMap 线程不安全
HashMap key允许为null value允许为null super是AbstractMap 线程不安全
12:合理利用好集合的有序性和稳定性,避免集合的无序性和不稳定性带来的负面影响。
13:利用Set集合唯一的特性,可以快速对一个集合进行去重 操作,避免使用List的contains方法进行遍历,对比,去重操作。
- (五)集合处理
- 一、(五)集合处理
- (五) 集合处理
- 【Java开发手册之编程规约(五)】集合处理
- (五)集合
- 集合初探(五)
- (五)容器-集合
- (五)java开发常用类(包装,数字处理集合等)(下)
- Java开发代码规范之编程规约(五)——集合处理
- Python(五)set 集合
- Spring(五):集合装配
- 五、集合
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)
- 测试服务器UDP/TCP丢包率
- socket通信
- 第一周
- Html和css动画及其效果
- js基本增删查
- (五)集合处理
- 带箭头的圆转动
- Laravel5.2 集成阿里云--OSS对象存储服务
- Java的由来
- bzoj 4424: Cf19E Fairy
- 【Android】高德定位错误总结
- STL
- Kubernetes的service mesh——第一部分:Service的重要指标
- AI说人“画” | 因果关系告诉你,爱笑的女孩运气不会太差?