1.SortedSet接口的实现类TreeSet.SortedSet中的.元素是有序的,元素按照自然顺序或是自己定义的比较器的顺序来排列的。
2.iterator接口:每个集合都会实现iterator接口,有自己的迭代器。具体实现如下:
HashSet hs = new HashSet();
// Iterator it = hs.iterator();
// While(it.hasnext()){
// System.out.println(it.next());
//}
For(integrator it= hs.iterator; it.hasnext()){
System.out.println(it.next());
}
3.TreeSet的add方法报异常问题:当指定的元素无法和集合中存在的元素比较,就会报ClassCastException,元素添加不进集合。这是因为TreeSet中有默认的比较器,当元素之间无法进行比较大小,就会报错,所以一般情况下会重写comparator接口并实现compare方法,定义自己的比较器。
4.String类的public int compareTo(String s)方法,返回-1,0,1.当前字符串比
s小,返回-1;二者相等,就返回0;当前字符串比s大,返回1。
5.Collections是一个类,而不是接口。Collections的静态方法ReverseOrder()返回一个Comparator对象。Colletions的静态方法Collections.sort(集合,comparator对象);Collections.shuffle(集合)返回一个乱序的集合。
使用Collections类可以简化TreeSet的操作,不必要再那么麻烦定义比较器,可以调用静态方法 ReverseOrder()直接返回一个Comparator对象。
6.hashMap类是Map接口的实现类,类中主要方法有,put(Object key, Object value),get(key)返回key对应的value值,keySet(),values();
7.Map中的key是不可以重复的,而values是可以重复的。当使用map中的put方法放置一键值对,其中的key是已存在keySet中,那么当前的键对应的value会覆盖之前的value。
8.keySet()方法返回值为Set:是因为key不能重复,而set中的元素恰好也不能重复。
Values()方法放回值为Collection:是因为map中的value是可以重复的,而Collection中的元素是可以重复的。
9.获取map的value值的途径:
1)通过get(Key)方法,逐一获取。
2)通过keySet()方法获取key集合,再使用迭代器,一次性获取。
3) 通过EntrySet()方法获取Entry集合,再使用迭代器获取。其中获取的类型是Map.Entry.
10.运行时配置参数:
Eclipse中,右键类,选中run configurationàargumentsà输入参数并以空格分隔。如果参数本身带有空格,用双引号将该参数引起来。
11.内部类相当与外部类的一个属性。如:Map.Entry;Entry类就是Map类中的内部类。
12.TreeMap和TreeSet相似,都是按自然顺序或是自己定义的比较器来排列元素的。
其中TreeMap比较的是key,TreeSet比较的是元素本身。.
15.策略模式:包含抽象策略类,具体策略类,环境类,客户端。抽象策略类一般用
一个接口或是抽象类来表示;具体策略类是一些实现了共同接口的类;环境类里面会保持着一个抽象策略类的引用和set方法,并在环境类中通过多态来操作具体策略类;客户端调用环境类来操作具体策略类中的方法。
16.HashSet和HashMap底层实现:
1)HashSet底层是用HashMap来实现的。当使用HashSet的add方法向HashSet添加元素时,底层实际是将该元素作为Map的key值,value始终是同一个假的object对象,因为在set中根本用不到Map中value值。
2)HashMap底层维护着一个Entry类型的数组,HashMap类中的元素是放置在这个数组中。
3)当向HashMap中put一对键值时,底层会根据key的hashCode个方法计算出一个位置。该位置就是此对象准备添加的位置。如果该位置没有对象就可直接放在此位置,如果有对象,就顺着存在对象的链开始寻找,如果此链上有对象,就会使用equals方法进行比较,如果返回值是false,则将该对象放入数组中,再将之前那个对象链到此对象的后面。
17.重写hashCode和equals方法,其目的是检测add方法欲添加的对象能否添加进集合。