学编程 ❀(๑╯◡╰๑)❀ 就上soxunxi.cn!这里有CMS,CSS,NET,PHP,Linux,HTML,JAVA,MySQL,Python等教程.
当前位置: JAVA > java中map能够按key排序吗?【JAVA教程】,java,map

map可以按key排序吗?

map可以按key排序,下面经由过程实例来看看。

示例:Java Map 按Key排序和按Value排序

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

public class MapSortDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Map<String, String> hMap = new HashMap<String, String>();
        hMap.put("a", "3");
        hMap.put("z", "2");
        hMap.put("b", "6");
        hMap.put("o", "9");

        System.out.println("依据key升序排序"); 
        Map<String, String> sortByKeyResultMap = sortMapByKey(hMap);    //按Key举行排序
        Iterator<Map.Entry<String, String>> sortByKeyEntries = sortByKeyResultMap.entrySet().iterator(); 
        while (sortByKeyEntries.hasNext()) { 
          Map.Entry<String, String> entry = sortByKeyEntries.next(); 
          System.out.println("Key = " + entry.getKey() + "------->Value = " + entry.getValue()); 
        }
        
        System.out.println("------------------------------"); 
        
        System.out.println("依据value降序排序"); 
        Map<String, String> sortByValueResultMap = sortMapByValue(hMap); //按Value举行排序
        Iterator<Map.Entry<String, String>> sortByValueEntries = sortByValueResultMap.entrySet().iterator(); 
        while (sortByValueEntries.hasNext()) { 
          Map.Entry<String, String> entry = sortByValueEntries.next(); 
          System.out.println("Key = " + entry.getKey() + "------->Value = " + entry.getValue()); 
        }
    }
    /**
     * 运用 Map按key举行排序
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByKey(Map<String, String> map) {
        if (map == null || map.isEmpty()) {
            return null;
        }
//        Map<String, String> sortMap = new TreeMap<String, String>(new MapKeyComparator());
        Map<String, String> sortMap = new TreeMap<String, String>(new Comparator<String>() {
            public int compare(String obj1, String obj2) {
                return obj1.compareTo(obj2);//升序排序
            }
        });
        sortMap.putAll(map);
        return sortMap;
    }
    
    /**
     * 运用 Map按value举行排序
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByValue(Map<String, String> map) {
        if (map == null || map.isEmpty()) {
            return null;
        }
        Map<String, String> sortedMap = new LinkedHashMap<String, String>();
        List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(map.entrySet());
//        Collections.sort(entryList, new MapValueComparator());
        Collections.sort(
            entryList, 
            new Comparator<Map.Entry<String, String>>(){
                   public int compare(Entry<String, String> o1, Entry<String, String> o2) {
                       return o2.getValue().compareTo(o1.getValue());// 降序排序
                   }
            }
        );

        Iterator<Map.Entry<String, String>> iter = entryList.iterator();
        Map.Entry<String, String> tmpEntry = null;
        while (iter.hasNext()) {
            tmpEntry = iter.next();
            sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
        }
        return sortedMap;
    }
}

java map

Map是键值对的鸠合接口,它的完成类重要包含:HashMap,TreeMap,Hashtable以及LinkedHashMap等。

Map不许可键(key)反复,但许可值(Value)反复。

1、HashMap:

最经常使用的Map,依据键的hashcode值来存储数据,依据键可以直接获得他的值(由于雷同的键hashcode值雷同,在地点为hashcode值的处所存储的就是值,所以依据键可以直接获得值),具有很快的接见速率,遍用时,获得数据的递次完全是随机的,HashMap最多只许可一条纪录的键为null,许可多条纪录的值为null,HashMap不支撑线程同步,即恣意时候可以有多个线程同时写HashMap,如许对致使数据不一致,假如须要同步,可以运用synchronziedMap的要领使得HashMap具有同步的才能或许运用concurrentHashMap

2、HashTable:

与HashMap相似,差别的是,它不许可纪录的键或值为空,支撑线程同步,即恣意时候只能有一个线程写HashTable,因而也致使HashTable在写入时比较慢!

3、LinkedHashMap:

是HahsMap的一个子类,但它坚持了纪录的插进去递次,遍用时先获得的肯定是先插进去的,也可以在组织时带参数,根据运用次数排序,在遍用时会比HahsMap慢,不过有个破例,当HashMap的容量很大,现实数据少时,遍历起来会比LinkedHashMap慢(由于它是链啊),由于HashMap的遍历速率和它容量有关,LinkedHashMap遍历速率只与数据若干有关

4、TreeMap:

完成了sortMap接口,可以把保留的纪录根据键排序(默许升序),也可以指定排序比较器,遍用时获得的数据是排过序的

引荐进修:Java视频教程

以上就是java中map可以按key排序吗?的细致内容,更多请关注ki4网别的相干文章!

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

分享到:
赞(0) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"java中map能够按key排序吗?【JAVA教程】,java,map"

最新评论

    暂无留言哦~~

博客简介

看古风美女插画Cos小姐姐,素材合集图集打包下载:炫龙网,好看二次元插画应有尽有,唯美小姐姐等你来。

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

服务热线:
 

 QQ在线交流

 旺旺在线