类 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;
                            
                            
                    
                }
               
}



原创粉丝点击