键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。
按照2倍+1的规律去扩容
与HASHMAP对比
PROPERTIES,也是MAP接口的实现类,是Hashtable的子类
.properties 文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西
详细可见博客园博客:Java 读写Properties配置文件
常用方法,同之前学的,多用KEY值进行操作
选取集合实现类的规则
TreeSet
使用TreeSet进行排序
代码如下:
public class TreeMap_ {public static void main(String[] args) {TreeSet treeSet = new TreeSet(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {//调用方法进行字符串大小的比较//o2在前则是从大到小return ((String)o1).compareTo((String) o2);}});treeSet.add("jack");treeSet.add("tom");treeSet.add("sp");treeSet.add("a");}
}
将匿名内部类的对象传给TreeMap里面的comparator属性。此时TreeSet不会添加重复的对象,比较时如果发现为0,即相等,则会进行一个类似于替换的操作。
比如长度从大到小时,如果长度一样,则后来者无法添加进来,用原来的旧数据替换(?)该位置。
TreeMap
TreeSet的底层就是TreeMap。
从单例到Map的双例了,单例时VALUE值是个静态常量PRESENT。
在TreeMap的排序下,同TreeSet一样(因为二者底层相同),都是按照KEY值进行排序的。
TreeMap底层是ENTRY,而不再是NODE了。ENTRY是TREEMAP里面的一个内部类。
Collections工具类
基本上都是静态的方法。
代码如下:
public static void main(String[] args) {List list = new ArrayList();list.add("tom");list.add("smith");list.add("king");list.add("milan");//反转Collections.reverse(list);System.out.println(list);//打乱顺序,每次打乱顺序后都不一样//可以用于抽奖游戏Collections.shuffle(list);//自然排序,按照字典顺序Collections.sort(list);//按照字符串长度大小排序等自定义排序Collections.sort(list, new Comparator() {@Overridepublic int compare(Object o1, Object o2) {return ((String)o1).length() - ((String)o2).length();}});//交换Collections.swap(list,0,1);}
其中一些要注意的代码:
//将后面的表复制到前面的表中,拷贝List copy = new ArrayList();//但此时,因为大小太小会抛出异常for (int i = 0; i < list.size(); i++) {copy.add("");}Collections.copy(copy,list);