文档章节

将LinkedHashMap中按照名称中含有某个文字的索引大小进行排序

文文1
 文文1
发布于 2017/03/01 09:30
字数 301
阅读 39
收藏 1

LinkedHashMap本身不能排序,它是按照插入的顺序来取数据的,所以这里要把一个正确排序的新的LinkedHashMap对象赋值给原来需要排序的对象:

Map<Long,String> rateStdList=new LinkedHashMap<Long,String>();
//..省略往rateStdList中添加元素的过程
List<Map.Entry<Long, String>> infoIds = new ArrayList<Map.Entry<Long, String>>(rateStdList.entrySet());  
// 按照库名中含有养护的费率库放在前面
Collections.sort(infoIds, new Comparator<Map.Entry<Long, String>>() {  
	public int compare(Map.Entry<Long, String> o1,  
			Map.Entry<Long, String> o2) {  
		return (o2.getValue().indexOf("养护")-o1.getValue().indexOf("养护"));  
	}  
});  

Map<Long,String> sortRateStdList=new LinkedHashMap<Long,String>(); 
for (int i = 0; i < infoIds.size(); i++) {  
	Entry<Long,String> ent=infoIds.get(i);  
	sortRateStdList.put(ent.getKey(),ent.getValue()) ;
};
//最后把排序号的新的LinkedHashMap赋值给原来的rateStdList 
rateStdList = sortRateStdList;

另外再给个实例:

public static void main(String[] args) {  
Map<String, Integer> map = new HashMap<String, Integer>();  
  
map.put("lisi", 5);   
map.put("lisi1", 1);   
map.put("lisi2", 3);   
map.put("lisi3", 9);   
  
List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(  
        map.entrySet());  
System.out.println("--------------排序前--------------");  
for (int i = 0; i < infoIds.size(); i++) {  
    String id = infoIds.get(i).toString();  
    System.out.println(id);  
}  
// 排序  
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {  
    public int compare(Map.Entry<String, Integer> o1,  
            Map.Entry<String, Integer> o2) {  
        return ( o1.getValue()-o2.getValue());  
    }  
});  
System.out.println("--------------排序后--------------");  
for (int i = 0; i < infoIds.size(); i++) {  
    Entry<String,Integer> ent=infoIds.get(i);  
    System.out.println(ent.getKey()+"="+ent.getValue());  
      
}  

 

© 著作权归作者所有

共有 人打赏支持
文文1
粉丝 19
博文 340
码字总数 114952
作品 0
长沙
程序员
HashMap,LinkedHashMap,TreeMap的区别

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访...

浮躁的码农
2015/07/29
0
0
Java集合 --- LinkedHashMap底层实现和原理(源码解析)

概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明。 LinkedHashMap,见...

起个名忒难
2017/09/24
0
0
HashMap,LinkedHashMap,TreeMap的有序性

HashMap 是将 Key 做 Hash 算法,然后将 Hash 值映射到内存地址,直接取得 Key 所对应的数据。在 HashMap 中,底层数据结构使用的是数组,所谓的内存地址即数组的下标索引。HashMap 的高性能...

小杰java
03/08
0
0
【全程干货】搜索引擎是如何建立索引的?

索引结构如果建立好了,可以提高搜素的速度,那么给定一个文档集合,索引是如何建立起来的?建立索引的方式有很多种,本文讲解比较实用的3种建立索引的方法。 两边文档遍历法 顾名思义,此方...

努力拼搏的80后
03/22
0
0
android开发常用的缓存策略详解(1)- LRU缓存策略

在android开发中我们为了提升App的性能,常用到缓存策略,特别在图片加载中,为了尽可能减少网络请求,通常会采用内存缓存和硬盘缓存的对已经加载的图片进行存储,但是由于磁盘的不能能是无限...

qq_35703234
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
昨天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
昨天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
昨天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
昨天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部