Android知识

集合类的相关总结(二)

2017-04-30  本文已影响0人  MLLWF

上一篇我们说完了List类和其一些常用的子实现类,这篇我们说下Set类和其常用的子实现类;
集合类的相关总结(一)

Set<E>类

HashSet<E>类

此类实现不是同步的,如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改)可以在创建的时候用Collections.synchronizedList方法将对象“包装起来”。
** Set s = Collections.synchronizedSet(new HashSet(...));**

TreeSet<E>类

特别注意:

代码展示:

- 构建自然排序的TreeSet集合
1图片.png
2图片.png
运行结果.png

从结果可以看出,我在自定义比较规则中是按照年龄的升序进行排列的,并且可以看到结果出现了两个42岁的人,那个因为我再自定义比较规则的时候,判断当年龄相同时返回的不是0,如果是0就代表是重复数据,那么集合只会保留第一次出现该年龄的元素。例如:


图片.png

- 构建带有比较器的TreeSet集合


1图片.png
2图片.png
运行结果

从结果可以看出是按照字母顺序来的,而且不区分大小写。但是如果换成汉字的话,顺序好像就不管用了,所以建议还是将汉字转换为拼音进行比较好。例如:


图片.png

知识扩展:Comparator类和Comparable类的简单了解

可以看到此方法返回的是一个int类型的数据,那么怎么能够体现排序的原则呢?答案就是:

比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。我们一般返回的值就是用 -1、0 或 1。

比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。我们一般返回的值就是用 -1、0 或 1。

上一篇 下一篇

猜你喜欢

热点阅读