类 TreeMap<k,v> 遍历 TreeMap<String,String> 和TreeMap<Person,Person>
来源:互联网 发布:电池测试系统算法软件 编辑:程序博客网 时间:2024/06/07 05:09
类TreeMap<k,v> a.基于红黑树(Red-Black tree)的 NavigableMap 实现。
b.该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
c. 遍历方式: iterator entrySet()
d.此类实现不是同步,所以不安全
/** TreeMap 两种遍历方式
treeMap<String,String>和treeMap<Person,Person> 的区别
treeMap<String,String> ,String引用类型是官方定义的,所有它可以应用treeSet的所有方法.
treeMap<Person,Person> ,Person类型时通过put()增加元素时,需要根据创建map提供的Comparator进行排序,具体需要通过重写person类里的compareTo()方法*/import java.util.Comparator;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.SortedMap;
import java.util.TreeMap;
public class TreeMapTest{
public static void main(String[] args){
//创建集合对象
TreeMap<String,String> t=new TreeMap<String,String>();
//创建并增加
String a=t.put("02", "张三");
String e=t.put("02", "张三");
String b=t.put("01", "李四");
String c=t.put("05", "王无");
String d=t.put("04", "赵七");
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
//遍历集合
Iterator<String> io=t.keySet().iterator();
while(io.hasNext()){
String key=io.next();
String value=t.get(key);
System.out.print(key+value+" ");
}
System.out.println("===============TreeMap<Person,Person>===============");
//创建集合
TreeMap<Person,Person> tree1=new TreeMap<Person,Person>();
//创建并增加
Person pp1=new Person("张三",20);
Person pp2=new Person("张三",20);
Person pp3=new Person("李四",12);
Person pp4=new Person("李四",10);
Person pp5=new Person("李四",15);
Person pp6=new Person("李四",15);
tree1.put(pp1,pp3);
tree1.put(pp2,pp4);
tree1.put(pp5,pp6);
//遍历集合
Iterator<Person> iiii=tree1.keySet().iterator();
while(iiii.hasNext()){
Person key=iiii.next();
Person value=tree1.get(key);
System.out.print(key.name+key.age);
System.out.print(value.name+value.age);
System.out.println();
}
}
//Person类型时通过put()增加元素时,需要根据创建Set提供的Comparator进行排序,具体需要通过重写person类里的compareTo()方法*/
public class Person implements Comparable{
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public String toString(){
return "名字:"+this.name+" 年龄:"+this.age;
}
//排序
public int compareTo(Object p){
int i=0;
if(p instanceof Person){
Person p1=(Person) p;
if(this.age<p1.age){
return i=this.age-p1.age;
}else if(this.age>p1.age){
return i=this.age-p1.age;
}
else if(this.name.compareTo(p1.name)>0){
return 1;
}else {if(this.name.compareTo(p1.name)<0){
return -1;
}
}
}
return i;
}
}
- 类 TreeMap<k,v> 遍历 TreeMap<String,String> 和TreeMap<Person,Person>
- 关于类 HashMap<K,V> 遍历方式及HashMap<String,String>和HashMap<Person,Person>
- TreeMap<K,V>的使用
- TreeMap
- TreeMap
- treeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- TreeMap
- treemap
- treemap
- TreeMap
- TreeMap
- treemap
- -TreeMap
- ELK 日志分析系统(四)
- Mac下adb 配置
- 代码签名
- 考研英语善变的more than:后加词性不同,意思有变
- js基础
- 类 TreeMap<k,v> 遍历 TreeMap<String,String> 和TreeMap<Person,Person>
- k-近邻算法
- ubuntu--software
- mmap实现进程通讯
- 2017考研复试面试:如何在专业知识环节脱颖而出
- 权势二进制
- Android内存优化
- Genymotion与android studio
- Android源码分析