ComparatorByAge比较器,根据年龄比较:
public class ComparatorByAge implements Comparator<Object> {
public int compare(Object o1, Object o2) {
Personnel p1 = (Personnel) o1;
Personnel p2 = (Personnel) o2;
int byAge = p1.getAge()-p2.getAge();
return byAge == 0?p1.getName().compareTo(p2.getName()):byAge;
}
}
/**
* Map<K,V> 接口,将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
* |--HashMap :基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作
* |--LinkedHashMap :Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
* 此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。
* |--TreeMap :基于二叉树、该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,
* 具体取决于使用的构造方法。
* |--HashTable: 哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
*/
public class TreeMapDemo {
public static void main(String[] args) {
TreeMap<Integer, String> ts = new TreeMap<Integer, String>();
//使用比较器来排序
TreeMap<Personnel, String> ps = new TreeMap<Personnel, String>(new ComparatorByAge());
fonctions(ts);
System.out.println();
fonctionp(ps);
}
private static void fonctions(TreeMap<Integer, String> ts) {
ts.put(7,"大方");
ts.put(2,"丽丽");
ts.put(5,"小花");
ts.put(8,"李平");
ts.put(12,"郑西");
ts.put(9,"童鸣");
System.out.println("显示数据源:"+ts);
}
private static void fonctionp(TreeMap<Personnel, String> ps) {
//添加对象
Personnel p = new Personnel("xiaofang",18);
Personnel pr = new Personnel("zhangsan",10);
ps.put(new Personnel("lisi",20),"北京");
//添加两次(覆写equals方法)
ps.put(new Personnel("lisi",20),"上海");
ps.put(new Personnel("wangwu",30),"湖北");
ps.put(new Personnel("xiaoqing",30),"大连");
ps.put(new Personnel("penghuai",30),"乌鲁木齐");
ps.put(p,"新加坡");
ps.put(pr,"天津");
System.out.println("显示数据源:");
//获取对象中的元素:
entrySets(ps);
}
private static void entrySets(TreeMap<Personnel, String> ps) {
Set<Map.Entry<Personnel,String>> sp = ps.entrySet();
Iterator<Map.Entry<Personnel,String>> ip = sp.iterator();
while(ip.hasNext()){
Entry<Personnel, String> p = ip.next();
System.out.println(p);
}
}
}
运行结果:
显示数据源:{2=丽丽, 5=小花, 7=大方, 8=李平, 9=童鸣, 12=郑西}
显示数据源:
zhangsan:10=天津
xiaofang:18=新加坡
lisi:20=上海
penghuai:30=乌鲁木齐
wangwu:30=湖北
xiaoqing:30=大连
Api:
类 TreeMap<K,V>
java.lang.Object |--java.util.AbstractMap<K,V> |--java.util.TreeMap<K,V>
构造方法摘要 | |
---|---|
TreeMap() 使用键的自然顺序构造一个新的、空的树映射。 | |
TreeMap(Comparator<? super K> comparator) 构造一个新的、空的树映射,该映射根据给定比较器进行排序。 | |
TreeMap(Map<? extends K,? extends V> m) 构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。 | |
TreeMap(SortedMap<K,? extends V> m) 构造一个与指定有序映射具有相同映射关系和相同排序顺序的新的树映射。 |
方法摘要 | |
---|---|
Map.Entry<K,V> | ceilingEntry(K key) 返回一个键-值映射关系,它与大于等于给定键的最小键关联;如果不存在这样的键,则返回 null 。 |
K | ceilingKey(K key) 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null 。 |
void | clear() 从此映射中移除所有映射关系。 |
Object | clone() 返回此 TreeMap 实例的浅表副本。 |
Comparator<? super K> | comparator() 返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。 |
boolean | containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 |
boolean | containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true。 |
NavigableSet<K> | descendingKeySet() 返回此映射中所包含键的逆序 NavigableSet 视图。 |
NavigableMap<K,V> | descendingMap() 返回此映射中所包含映射关系的逆序视图。 |
Set<Map.Entry<K,V>> | entrySet() 返回此映射中包含的映射关系的 Set 视图。 |
Map.Entry<K,V> | firstEntry() 返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null 。 |
K | firstKey() 返回此映射中当前第一个(最低)键。 |
Map.Entry<K,V> | floorEntry(K key) 返回一个键-值映射关系,它与小于等于给定键的最大键关联;如果不存在这样的键,则返回 null 。 |
K | floorKey(K key) 返回小于等于给定键的最大键;如果不存在这样的键,则返回 null 。 |
V | get(Object key) 返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null 。 |
SortedMap<K,V> | headMap(K toKey) 返回此映射的部分视图,其键值严格小于 toKey。 |
NavigableMap<K,V> | headMap(K toKey, boolean inclusive) 返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey 。 |
Map.Entry<K,V> | higherEntry(K key) 返回一个键-值映射关系,它与严格大于给定键的最小键关联;如果不存在这样的键,则返回 null 。 |
K | higherKey(K key) 返回严格大于给定键的最小键;如果不存在这样的键,则返回 null 。 |
Set<K> | keySet() 返回此映射包含的键的 Set 视图。 |
Map.Entry<K,V> | lastEntry() 返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null 。 |
K | lastKey() 返回映射中当前最后一个(最高)键。 |
Map.Entry<K,V> | lowerEntry(K key) 返回一个键-值映射关系,它与严格小于给定键的最大键关联;如果不存在这样的键,则返回 null 。 |
K | lowerKey(K key) 返回严格小于给定键的最大键;如果不存在这样的键,则返回 null 。 |
NavigableSet<K> | navigableKeySet() 返回此映射中所包含键的 NavigableSet 视图。 |
Map.Entry<K,V> | pollFirstEntry() 移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null 。 |
Map.Entry<K,V> | pollLastEntry() 移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null 。 |
V | put(K key, V value) 将指定值与此映射中的指定键进行关联。 |
void | putAll(Map<? extends K,? extends V> map) 将指定映射中的所有映射关系复制到此映射中。 |
V | remove(Object key) 如果此 TreeMap 中存在该键的映射关系,则将其删除。 |
int | size() 返回此映射中的键-值映射关系数。 |
NavigableMap<K,V> | subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回此映射的部分视图,其键的范围从 fromKey 到 toKey 。 |
SortedMap<K,V> | subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。 |
SortedMap<K,V> | tailMap(K fromKey) 返回此映射的部分视图,其键大于等于 fromKey。 |
NavigableMap<K,V> | tailMap(K fromKey, boolean inclusive) 返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey 。 |
Collection<V> | values() 返回此映射包含的值的 Collection 视图。 |