java中map的使用和排序使用
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。采用键值对的形式存储数据,主键唯一,当给一个键重复赋值时第二次赋的值会覆盖第一次赋的值。设置值用set("key","value");,获得指
先看看JDK中是怎么定义的吧
(1)public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相
此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。
指定列表必须是可修改的,但不必是大小可调整的。
参数:
list - 要排序的列表。
抛出:
ClassCastException - 如果列表包含不可相互比较 的元素(例如,字符串和整数)。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparable
(2)
public static <T> void sort(List<T> list,
Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元素,
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException - 如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparator
下面看下实际例子吧:
// 按mainProjCode升序、按subProjCode降序排列
Collections.sort(dtos, new PmProjAndSubProjViewComparator());
class PmProjAndSubProjViewComparator implements
Comparator<PmProjAndSubProjViewDto> {
public int compare(PmProjAndSubProjViewDto o1,
PmProjAndSubProjViewDto o2) {
//先比较主的mainid
int result = o1.getMainId().compareTo(o2.getMainId());
//如果主id比较相等话,在比较从的id
if (result == 0) {
//如果o2中SubId字段为空的话就返回o1中的值
if (StringUtils.isBlank(o2.getSubId())) {
return 1;
}
//如果o1中SubId字段为空的话就返回o2中的值
if (StringUtils.isBlank(o1.getSubId())) {
return -1;
}
result = o2.getSubId().compareTo(o1.getSubId());
}
return result;
}
}
要充分理解排序就必须先理解最后的return 0, -1 , 1 这三个数字代表的含义。它们不是代表数字而是代表前面和后面要比较的值哪个大哪个小?如果是0表示要比较的这两个数字相等。如果是1表示前面数字大,如果 -1表
在写这个比较规则的时候,千万不要想着套数字进去来进行比较,就想着前面数字和后面数字比较,如果前面大就return 1,否则return -1.
这个类似于.net中这个排序:
根据Collections.sort重载方法来实现
一下是从网上搜到的关于Collections.sort排序的问题,希望对大家有所帮助。
(1)public static <T extends Comparable<? super T>> void sort(List<T> list)--------------(List<T> list)我能理解,是比较传入的集合用的。------前面的public static <T extends Comparable<? super T>>
<T extends Comparable<? super T>> 是定义T的类型,必须扩展自Comparable<? super T>即T必须是一个Comparable能比较的对象。就是说传入的List<T> 中的T类型,必须继承自Comparable,即必须具有有效的compareTo方
chitemlst[i].lcWorkLinkDtos.Sort(delegate(CodeDto v1, CodeDto v2) { return Comparer<string>.Default.Compare(v1.code, v2.code); });
对集合中的某个字段进行排序的方法;使用集合的Sort()方法来声明个委托来进行比较;例如上面的例子,对集合中CodeDto类的code字段来进行排序;
转载于:https://blog.51cto.com/zhjjzhjj/1126277
java中map的使用和排序使用相关推荐
- Java中Map用法详解
原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...
- c++ map是有序还是无序的_C++ STL中Map的按Key排序和按Value排序
map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义 ...
- java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...
Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...
- java中常用的几种排序算法--常见笔试面试
转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...
- Java中Map里put方法的返回值
在java中,Map里的put方法,如果key值不存在,则返回值是null,但是key值如果存在,则会返回原先被替换掉的value值.(当然,map中的key和value都允许是null). Map ...
- C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行 ...
- java中map类型_Java中Map类型遍历的两种方式对比
Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...
- java中Map遍历的四种方式
java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...
- map操作 java,Java中Map基本操作
Java中Map基本操作 void:clear() 清空集合中所有的对 boolean:containsKey(Object key) 判断是否包含指定的键 boolean:containsValue ...
- Java中sort实现降序排序
Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...
最新文章
- 关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解
- 从GPT-3到DETR,一起来盘点2020有哪些突破?
- 消息模式Toast.makeText的几种常见用法
- 同一个页面,两次请求保证查询条件不变(题目不太相符,我比较渣,问题都不知道怎么表述!--)...
- java中的文件_JAVA中文件的操作
- c 语言字符串转二进制,在C ++中将字符串转换为二进制序列
- javascript变量中基本类型和引用类型的详解解读
- WeChall_PHP-0817
- .net core 2.0学习笔记(一):开发运行环境搭建
- redhat linux配置RSH遇见的问题
- 【OpenGL】OpenGL视图和模型变换中各变换发生顺序的思考
- python猴子偷桃递归_C++猴子偷桃问题
- callback函数_Nodejs 源码解析 util.promisify 如何将 Callback 转为 Promise
- 为什么要baidu/Google问题 尽量少在群里问问题
- 多个折线样式_Python数据可视化实例:关于图表“贵族”折线的增强优化方法
- vs2008中文版提供下载(包含中文msdn)
- 在线电子名片html,HTML5 个人信息卡片(电子名片)模板
- ST-LINK烧录stm32程序步骤
- 自动驾驶创业方向有变化?如何突破技术瓶颈?
- 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用
热门文章
- FabFilter Total Bundle 2021 mac版:14个专业的FabFilter插件(含安装与卸载)
- openssl/ssl.h,No such file or directory
- Duplicate spring bean id
- Android与物联网设备通信-网络模型分层
- C语言实现的Python扩展模块
- 删除一个目录下的所有文件,但保留一个指定文件
- 渠道效果五步优化,让采购的流量物超所值
- 【产品 设计】入门 - 工具篇 - Sketch + Skala Preview
- Eclipse中添加Android系统jar包
- 面向对象三大特征:封装、继承、多态