精华内容
下载资源
问答
  • TreeMap按VALUE排序

    2012-06-10 02:15:20
    TreeMap按VALUE排序
  • package demo1;import java.util.Comparator;import java.util.HashMap;...import java.util.TreeMap;public class Testing {public static void main(String[] args) {HashMap map = new HashMap...

    package demo1;

    import java.util.Comparator;

    import java.util.HashMap;

    import java.util.Map;

    import java.util.TreeMap;

    public class Testing {

    public static void main(String[] args) {

    HashMap map = new HashMap<>();

    ValueComparator vc = new ValueComparator(map);

    TreeMap sorted_map = new TreeMap<>(vc);

    map.put("A", 432.3);

    map.put("B", 44.3);

    map.put("C", 46.3);

    map.put("D", 43.3);

    sorted_map.putAll(map);

    System.out.println(map);

    System.out.println(sorted_map);

    }

    }

    class ValueComparator implements Comparator{

    private Map base;

    public ValueComparator(Map base) {

    this.base = base;

    }

    @Override

    public int compare(String a, String b) {

    if (base.get(a) >= base.get(b)) {

    return 1;

    }

    return -1;

    }

    }

    展开全文
  • 使用TreeMap值排序

    千次阅读 2017-03-18 11:31:17
    如果我们需要一个有序的Map,我们会使用TreeMap...TreeMap默认是按照key升序进行排序的,如数字、ASCII。 如果我们需要对TreeMap进行排序的话,可以实例化Comparator接口,在TreeMap的构造方法中当作参数传入。

    如果我们需要一个有序的Map,我们会使用TreeMap进行存储。TreeMap默认是按照key值升序进行排序的,如数字、ASCII。
    如果我们需要对TreeMap按值进行排序的话,可以实例化Comparator接口,在TreeMap的构造方法中当作参数传入。这里遇到了问题:当插入TreeMap的两条数据value值一样的时候,后一条数据会覆盖前一条数据。
    通过查资料发现,原因是实例化Comparator接口的时候,相当于自己实现了一个比较器,而TreeMap的插入与取出都是会经过比较器的。以如下代码为例:
    1. public class ValueComparator implements Comparator<Object>{  
    2.   
    3.     Map<Object, Object> base;  
    4.       
    5.     public ValueComparator(Map<Object, Object> map){  
    6.         this.base = map;  
    7.     }  
    8.       
    9.     @Override  
    10.     public int compare(Object o1, Object o2) {  
    11.         Integer value1 = Integer.parseInt(base.get(o1.toString()).toString());  
    12.         Integer value2 = Integer.parseInt(base.get(o2.toString()).toString());  
    13.         if ((value2 - value1) > 0) {  
    14.             return 1;  
    15.         }else if (value2 - value1 ==0) {  
    16.             return o2.toString().compareTo(o1.toString());  
    17.         }else {  
    18.             return -1;  
    19.         }  
    20.     }  
    21. }  
    public class ValueComparator implements Comparator<Object>{
    
    	Map<Object, Object> base;
    	
    	public ValueComparator(Map<Object, Object> map){
    		this.base = map;
    	}
    	
    	@Override
    	public int compare(Object o1, Object o2) {
    		Integer value1 = Integer.parseInt(base.get(o1.toString()).toString());
    		Integer value2 = Integer.parseInt(base.get(o2.toString()).toString());
    		if ((value2 - value1) > 0) {
    			return 1;
    		}else if (value2 - value1 ==0) {
    			return o2.toString().compareTo(o1.toString());
    		}else {
    			return -1;
    		}
    	}
    }



    base就是我们需要按值排序的Map,在ValueComparator的构造方法中传入。然后在下面的compare方法中,value1与value2就是根据o1和o2取到的value值,其中o1与o2都是Map的key值。当o1与o2的value值不一样的时候,会返回1与-1,代表着排序关系。而当他们的value值一样的时候,需要对o1和o2的进行排序关系的判断。当取出数据的时候,过程是一样的,需要根据get方法中的参数对TreeMap中的数据对TreeMap进行遍历判断,如果相等则返回0,并且get方法会返回相等的那个对象,如果不等,就搜索下一节点并进行判断,知道遍历完整个TreeMap。
    这里就很明显了,如果两个key值一样的对象插入到TreeMap中时,由于插入的时候进行判断返回的结果为0,后一个插入的对象会覆盖在TreeMap中存储的对象。

    以上转自:http://blog.csdn.net/u012434091/article/details/38276807

    自己项目中用的treemap:

    //treeMap排序代码
    
    public AppCacheDataManager() {
    
    metaMap = new TreeMap<String,AppMetaData>(newMyComparator());
    
    appList = new Vector<String>();
    
    this.comm= HistoryClient.build();
    
    userInfoMap = new HashMap<String,AmUserInfo>();
    
    }
    
    public static class MyComparator implementsComparator {
    public int compare(Objecto1, Object o2) {
    
    String s1 = (String) o1;
    
    String s2 = (String) o2;
    
    String str1 = s1.replace('_','-');
    
    String str2 = s2.replace('_','-');
    
    return str2.compareTo(str1);
    // app_user_20161111152008_1928 与app-user-20161111152008-1930去掉前面"app_user_9"个字符, // 和后面"_1928"5个或6个字符之后再比较。前面方法不好使,所以直接把_转为-再排序
    }
    }
    

    
    
    
    
    
    
    展开全文
  • TreeMap】对Map按key和value分别排序

    千次阅读 2021-02-12 21:58:30
    使用TreeMap可以对key 和Value进行排序Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。** TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键...

    使用TreeMap可以对key 和Value进行排序

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。

    ** TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。**

    HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。

    对key值进行排序的代码:

    
     

    import java.util.Comparator;

    import java.util.Iterator;

    import java.util.Map;

    import java.util.Set;

    import java.util.TreeMap;

    public class TreeMapTest {

    public static void main(String[] args) {

    Map map = new TreeMap(

    new Comparator() {

    public int compare(String obj1, String obj2) {

    // 降序排序

    return obj2.compareTo(obj1);

    }

    });

    map.put("b", "ccccc");

    map.put("d", "aaaaa");

    map.put("c", "bbbbb");

    map.put("a", "ddddd");

    Set keySet = map.keySet();

    Iterator iter = keySet.iterator();

    while (iter.hasNext()) {

    String key = iter.next();

    System.out.println(key + ":" + map.get(key));

    }

    }

    }

    输出为:

    d:aaaaa

    c:bbbbb

    b:ccccc

    a:ddddd

    对value进行排序

    
     

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    import java.util.Map;

    import java.util.Map.Entry;

    import java.util.TreeMap;

    public class TreeMapTest {

    public static void main(String[] args) {

    Map map = new TreeMap();

    map.put("a", "ddddd");

    map.put("c", "bbbbb");

    map.put("d", "aaaaa");

    map.put("b", "ccccc");

    //这里将map.entrySet()转换成list

    List> list = new ArrayList>(map.entrySet());

    //然后通过比较器来实现排序

    Collections.sort(list,new Comparator>() {

    //升序排序

    public int compare(Entry o1,

    Entry o2) {

    return o1.getValue().compareTo(o2.getValue());

    }

    });

    for(Map.Entry mapping:list){

    System.out.println(mapping.getKey()+":"+mapping.getValue());

    }

    }

    }

    输出为:

    d:aaaaa

    c:bbbbb

    b:ccccc

    a:ddddd

    参考文档:

    展开全文
  • TreeMap按照value进行排序

    万次阅读 多人点赞 2016-01-04 10:53:28
    TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成...

    TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。


    今天有个需求,就是要根据treeMap中的value排序。所以网上看了一下,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序。代码:

    public static void sortByValue() {
    		Map<String,String> map = new TreeMap<String,String>();
    		map.put("a", "dddd");
    		map.put("d", "aaaa");
    		map.put("b", "cccc");
    		map.put("c", "bbbb");
    		
    		List<Entry<String, String>> list = new ArrayList<Entry<String, String>>(map.entrySet());
    		
    		Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
                //升序排序
                public int compare(Entry<String, String> o1, Entry<String, String> o2) {
                    return o1.getValue().compareTo(o2.getValue());
                }
            });
    		
    		for (Entry<String, String> e: list) {
    			System.out.println(e.getKey()+":"+e.getValue());
    		}
    	}

    运行结果:

    d:aaaa
    c:bbbb
    b:cccc
    a:dddd

    展开全文
  • JAVA TreeMap之根据Values排序

    千次阅读 2019-06-16 18:22:31
    能够把它保存的记录根据键(key)排序,默认是按升序排序。 (2)TreeMap<K,V>类,它按照Hash映射存储的”键/“对作为树节点存储对象。HashMap的是没有顺序的,它是按照key的HashCode来实现的,根据键可以直.....
  • TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。为了处理排序的问题:1. 对于...
  • TreeMap 按照value值排序

    2020-08-07 17:17:07
    按照value里gmn_no进行排序如果相等按照di_no排序 TreeMap<Integer, Map> zeroTreeMap = new TreeMap<Integer, Map>(zeroList); zeroTreeMap 里为 { 1={gmn_no=1,di_no=3,scr_no=3} 2={gmn_no=3,di...
  • 本资源提供了List对对象中的属性和TreeMap, String>对键值排序,并针对100w条数据排序,对比List和TreeMap, String>排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...
  • 使用TreeMap 自动排序

    2021-08-11 10:23:18
    TreeMap<String, Object> signMap = new TreeMap<>(); // 入参 signMap.put("tccount", "admin"); signMap.put("account", "admin"); signMap.put("sccount", "admin"); signMap.put("eccount", ...
  • import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap;...import java.util.TreeMap; import ...
  • 1.List排序 List集合中的元素的特点,有序可重复。如果想以特定方式排序,需要通过以下几种方式:使用list的sort方法、使用Collections中的sort方法。 1.使用list的sort方法 package myblog.javabasis....
  • 要根据valueTreeMap进行排序,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序 一、Map的 Entry 对象 1、Entry: 键值对 对象。 在Map类设计是,提供了一个嵌套接口(st
  • 本文实例讲述了Java TreeMap排序算法。分享给大家供大家参考,具体如下:TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目中,从数据库查询出来的数据放在List中,顺序都...
  • 1. 定义TreeMap排序方法使用Comparator对象作为参数需要注意的是:排序方法是针对键的,而不是的。如果想针对,需要更麻烦的一些方法(重写一些方法)TreeMap res = new TreeMap(new Comparator() {@...
  • TreeMap按照key排序

    2021-03-14 04:04:56
    import java.util.Comparator;import java.util.TreeMap;public class Test {public static void main(String[] args) {//不指定排序TreeMap treeMap1 = new TreeMap();treeMap1.put("2", "1");tr...
  • 前一章所将是关于map的基础概念已经它的基本方法,增删获取遍历,其中...hashmap没什么好讲的,今天来讲一讲treemap,它与treeset类似,treeset自身具有排序的特性,实现方法有两种,一种是元素自身具有比较性,另一...
  • TreeMap实现排序,要求实现comparetor接口,重写compare(T o1,T o2)方法
  • 和技术人员讨论TreeMap通过对象排序的方法,记录一下 现在实现通过ReadData对象中的itemNo属性实现排序 public class ReadData { private String itemCatagory; private String itemNo; private ...
  • TreeMap按照value排序

    2021-06-26 16:19:27
    TreeMap默认实现只能根据key来排序,或者定义treeMap的时候new Comparator,自定义key排序的方法,但是不能按照value进行排序。 可以使用下面的方法,对value进行一次排序。 Map<String,Integer> map = new ...
  • 1.TreeMap是有序集合,默认按照key的compareTo来排序。 2.重写comparator,按照比较。 3.利用guava中Ordering.onResultOf方法 代码实现: import com.google.common.base.Functions; import ...
  • TreeMap 是一个有序的key-value集合,它是通过红黑树实现的,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。继承于AbstractMap,所以它是一个Map,...
  • 1.软件开发过程中集合排序是比较强大的功能,会使用集合Map、Set、List实现排序功能,知道匿名内部类Comparator很关键,搞清楚集合排序的性能开销,排序遇到的坑以及解决的方法,注意下面的例子都是JDK1.8的用法。...
  • 怎么在Java中利用TreeMap实现一个排序算法发布时间:2020-11-25 17:14:53来源:亿速云阅读:65作者:Leah怎么在Java中利用TreeMap实现一个排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以...
  • 这篇文章主要介绍了JAVA使用TreeMap对字符串进行排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下题目要求:给出一个字符串:...要求:化成字符串a(字符的个数)...
  • TreeMap排序问题

    2018-11-26 12:40:18
    TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序; 以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。 为了处理排序的问题:  1. ...
  • TreeMap排序规则

    千次阅读 2017-10-25 11:06:55
    TreeMap排序规则:public static void main(String[] args) { Map,String> map = new TreeMap,String>(); map.put("1", "A"); map.put("2", "C"); map.put("3", "K"); map.pu
  • treeMap值排序

    千次阅读 2021-02-18 13:24:58
    } 2、treeMap值排序 private static void test02(){ TreeMap treeMap = new TreeMap(); treeMap.put("zs", 18); treeMap.put("ls",25); treeMap.put("ww", 22); Set> entrySet = treeMap.entrySet(); List> list ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,949
精华内容 19,579
关键字:

treemap值排序

友情链接: Firmware.rar