TreeSet和TreeMap初始化时有无比较器的测试

1、二者默认按照升序排序:TreeSet按照存储元素升序排序;TreeMap按照key升序排序。


2、要想自定义TreeSet和TreeMap中元素的排序,可以在其初始化时,指定比较器即可。


3、测试code:

package sourcecode.analysis;

import java.util.*;

public class testCode  {
    public static void main(String[] args){

        /**
         * (1)TreeSet里面:没有接口Comparator中的compare方法,只调用了接口Comparator中的equals方法
         * (2)继承了抽象类AbstractSet<E>:equals方法被覆写.故TreeSet调用equals方法时,是调用的这个equals方法.
         */
        //例一:TreeSet在初始化时,指定比较器,从而指定元素的排列顺序
        TreeSet<Integer> set=new TreeSet<Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;//降序
            }
        });
        set.add(1);set.add(4);set.add(3);

        //例二:TreeSet在初始化时,不指定比较器,故元素的排列顺序为默认的升序
        TreeSet<Integer> set1=new TreeSet<Integer>();
        set1.add(1);set1.add(4);set1.add(3);

        //分别输出set,set1
        System.out.println("set: ");
        Iterator<Integer> iterator1=set.iterator();
        while (iterator1.hasNext()){
            System.out.print(iterator1.next()+" ");
        }
        System.out.println();
        System.out.println("---------------------");


        System.out.println("set1: ");
        Iterator<Integer> iterator2=set1.iterator();
        while (iterator2.hasNext()){
            System.out.print(iterator2.next()+" ");
        }
        System.out.println();
        System.out.println("---------------------");




        /**
         * (1)TreeMap里面:没有接口Comparator中的compare方法,只调用了接口Comparator中的equals方法
         * (2)继承了抽象类AbstractMap<K,V>:equals方法被覆写.故TreeMap调用equals方法时,是调用的这个equals方法.
         */
        //例一:TreeMap初始化时,未指定比较器,默认按照key升序
        TreeMap<Integer,Integer> map=new TreeMap<Integer, Integer>();
        map.put(1,1);map.put(2,3);map.put(-1,3);map.put(4,3);

        //例二:TreeMap初始化时,指定了比较器,按照key降序
        TreeMap<Integer,Integer> map1=new TreeMap<Integer, Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;//降序
            }
        });
        map1.put(1,1);map1.put(2,3);map1.put(-1,3);map1.put(4,3);

        //输出map,map1
        Iterator<Map.Entry<Integer,Integer>> i1=map.entrySet().iterator();
        Iterator<Map.Entry<Integer,Integer>> i2=map1.entrySet().iterator();

        System.out.println("map:");
        while (i1.hasNext()){
            Map.Entry<Integer,Integer> entry=i1.next();
            System.out.print("key:"+entry.getKey()+", ");
            System.out.println("value: "+entry.getValue());
        }
        System.out.println("---------------------");


        System.out.println("map1: ");
        while (i2.hasNext()){
            Map.Entry<Integer,Integer> entry=i2.next();
            System.out.print("key: "+entry.getKey()+", ");
            System.out.println("value: "+entry.getValue());
        }
        System.out.println("---------------------");
    }
}

输出结果:

set: 
4 3 1 
---------------------
set1: 
1 3 4 
---------------------
map:
key:-1, value: 3
key:1, value: 1
key:2, value: 3
key:4, value: 3
---------------------
map1: 
key: 4, value: 3
key: 2, value: 3
key: 1, value: 1
key: -1, value: 3
---------------------

Process finished with exit code 0



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值