TreeMap集合
- 存储键值映射关系,并且不允许出现重复的键
- TreeMap内部是通过二叉树的原理保证键的唯一性,与TreeSet集合存储原理一样
上代码:
package com.sgl;
import java.util.TreeMap;
public class Test {
public static void main(String[] args) {
//创建TreeMap集合
TreeMap<Object, Object> treeMap = new TreeMap<>();
treeMap.put("2","Jack");
treeMap.put("1","Jack");
treeMap.put("3","Lucy");
System.out.println(treeMap);
}
}
运行结果:
{1=Jack, 2=Jack, 3=Lucy}
同TreeSet集合一样,TreeMap集合也可以通过自定义比较器Comparator的方式对所有的键进行定制排序
上代码:
package com.sgl;
import java.util.Comparator;
import java.util.TreeMap;
class CustomComparator implements Comparator{
@Override
public int compare(Object obj1, Object obj2) {
String key1 = (String) obj1;
String key2 = (String) obj2;
return key2.compareTo(key1);
}
}
public class Test {
public static void main(String[] args) {
//创建TreeMap集合
TreeMap<Object, Object> treeMap = new TreeMap<>(new CustomComparator());
treeMap.put("2","Jack");
treeMap.put("1","Jack");
treeMap.put("3","Lucy");
System.out.println(treeMap);
}
}
/*
return key2.compareTo(key1);------>{3=Lucy, 2=Jack, 1=Jack}
return key1.compareTo(key2);------>{1=Jack, 2=Jack, 3=Lucy}
*/
Properties集合
- Hashtable是Map接口的另一个实现类,与HashMap十分相似,主要区别是Hashtable是线程安全的,
- Hashtable有一个子类Properties,Properties集合常用于存取应用的配置文件
package com.sgl;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
public class Test {
public static void main(String[] args) throws Exception {
//1.通过Properties进行文件读取操作
Properties pps = new Properties();
//加载要读取的文件test.properties
pps.load(new FileInputStream("test.properties"));
//遍历test.properties键值对文件信息
pps.forEach((k,v) -> System.out.println(k+":"+v));
//2.通过Properties进行属性文件写入操作
FileOutputStream out = new FileOutputStream("test.properties");
//向Properties类文件进行写入键值对信息
pps.setProperty("charset","UTF-8");
//将此Properties集合中新增键值对信息写入配置文件
pps.store(out,"新增charset编码");
}
}