基础笔记8(二)(容器-引用类型的排序)

1.类库中比较对象的大小实现了comparable接口的compateTo().

   已经实现了的如:integer,date,String(比较是每个字符的unicode编码大小,字符一样比较长度)

2.比较对象的两种方法:collections类提供的

1.public static <T extends Comparable<? super T>> void sort(List<T> list) {}
比较的对象实现
Comparable接口的comrateTo()比较方法,

2.
public static <T> void sort(List<T> list, Comparator<? super T> c) {}
另外编写两个对象的比较方法实现comparator接口的compate(),独立于比较的对象。

  Collections提供排序算法。

3.hashSet,treeSet对于集合自定义元素需要重写hashcode和equals方法以区别对象相等去重复。

4.有序的集合和map:TreeSet TreeMap  

4.1对于Tree容器是在添加元素时进行了排序,元素内容修改时候不会进行排序,并且可以修改产生相同数据。

构建TreeSet的集合的元素需要实现comparable接口,或者构建时候提供实现comparator接口的比较器。

构建TreeMap容器key也要已经实现接口,或者提供比较器(TreeSet其实也一种填充了value的TreeMap)

5.Collections的常用方法:

shuffle(List<?> list) 洗牌:随机打乱顺序

reverse(List<?> list)  反序

addAll(Collection<? super T> c, T... elements) 

swap(List<?> list, int i, int j) 交换数据

6.队列:Queue Deque

单向队列接口(queue):只能一端操作,一般是前进先出,优先级队列,堆栈队列(后进先出)

(前者方法出错抛出异常;后者返回布尔值)

添加元素:add(E e) ;offer(E e) ;

获取元素:element() ;peek();

删除元素:remove(); poll();

双向队列接口(Deque):可两端操作

添加第一个元素addFirst(E e) push(E e); offerFirst(E e);

获取第一个元素getFirst() element()     ; peek() peekFirst();

删除第一个元素remove() removeFirst(); poll() pollFirest();

addLast(E e) add(E e); offer(E e) offerLast(E e)

getLast()                  ; peekLast()

removeLast()            ; pollLast()

7。Enumeration接口类似迭代器(1.5之前的)。

8.vector 线程安全的数组,貌似没用过。

9。hashtable 线程安全,父类是dictionary,键值不能为null(应该做同步的需要把 )

     hashMpa非线程安全,父类是abstractMap,键可以为一个是null,值无所谓。

10.property 属于Map的实现类用于读写配置,键值都是value

常用方法

getProperty(String key)

getProperty(String key,String default):读取不到值,用默认值代替。

.property .xml 存放格式

10.1加载配置的几种方式和路径(相对和绝对路径(略))

11引用的的几种类型 :(简单纪录一下)

强引用(StrongReference):gc不会回收的

软引用(softReference):gc可能会被回收

弱引用(weakReference):gc时会被回收

虚引用(phantomReference):类似无引用,用于跟踪对象的回收状态和referenceQueue联合使用

(对象加入弱引用中运行gc()对象被回收(如new String("会回收");常量池中的却不会回收(String s="不会回收");

12,扩展的容器工具包有google的guava 和apache的commons_Collections

git:代码管理软件获取guava的源码

hugechm工具软件(将html文档转换为chm格式,适合转换api文档)

总结:

13.容器的三个重点:

迭代器:高效的遍历,增强for (实现iterator接口)

比较器:比较方法实现comparator 或者 对象实现comparable接口 

有序的集合和键值treeSet和treeMap

泛型:类 接口 方法 通配符 ? super extends 

14.hashSet需要重写hashcode 和equals来区分重复对象

原文地址:https://www.cnblogs.com/straybirds/p/6181769.html