键和值为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() {
@Override
public 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() {
@Override
public 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);
标签:14,list,TreeMap,String,add,Collections,Hashtable,TreeSet
From: https://www.cnblogs.com/gknives/p/18429887