1.//java中map的使用:
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。采用键值对的形式存储数据,主键唯一,当给一个键重复赋值时第二次赋的值会覆盖第一次赋的值。设置值用set("key","value");,获得指
定键的值用get("key")。例如:Map map = new HashMap();map.put("name",“aa”);map.put("age",15);  此时map.get("key")的值为15,如果在后面再加一句map.put("age",25);,此时map.get("key")值就为25。上面的
Map没有使用泛型,得到的值为Object类型,需要进行类型转换。String name=(String)map.get("name");int age=((Integer)map.get("age")).intValue();  使用泛型则不需要转换,例如:Map<String,String> map =new
HashMap<String,String>();map.put("name",“aa”); String name=map.get("name");
2.排序:
先看看JDK中是怎么定义的吧
(1)public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相
互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。
此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。
指定列表必须是可修改的,但不必是大小可调整的。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 此实现将指定列表转储到一个数组中,并对数组进行排序,
在重置数组中相应位置处每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。

参数:
list - 要排序的列表。
抛出:
ClassCastException - 如果列表包含不可相互比较 的元素(例如,字符串和整数)。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparable
(2)
public static <T> void sort(List<T> list,
                            Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元素,
c.compare(e1, e2) 不得抛出 ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 指定列表必须是可修改的,但不必是可大小调整的。此实现将
指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。
参数:
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 extends Comparable<? super T>> 是定义T的类型,必须扩展自Comparable<? super T>即T必须是一个Comparable能比较的对象。就是说传入的List<T> 中的T类型,必须继承自Comparable,即必须具有有效的compareTo方
法。自定义的class A{},没有compareTo,就不能List<A> a传入这个Collections.sort(a)方法。  该方法无返回值
答:就是你的List<T>这个T也就是你要放进去的类型,然后呢这个类型T要实现Comparable接口,这个接口有一个compareTo(T o)方法,你要重写这个方法,在这个方法里面写你的排序规则。sort放回调用这个compareTo(T o)
方法排序举个例子:一个User类
public class User implements Comparable{        private int age;      
private String name;      
//get set方法我就不写了       
//比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整                        //数、零或正整数。          //这里我就用age比较     
@Override        public int compareTo(T o){          
User user=(User)o;              
if(user!=null){                   
if(user.getAge()>this.getAge())                             
return 1;                      
else if(user.getAge()<this.getAge())        
return -1;                       
else if(user.getAge()=this.getAge())                            
reutrn 0;                }      
}
} 至于你问的那个是什么意思,那个是泛型,可能你现在还不怎么了解,学到后面就会知道了,有专门讲这一章的
.net中集合排序:
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的使用和排序使用相关推荐

  1. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

  2. c++ map是有序还是无序的_C++ STL中Map的按Key排序和按Value排序

    map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义 ...

  3. java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...

    Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...

  4. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  5. Java中Map里put方法的返回值

    在java中,Map里的put方法,如果key值不存在,则返回值是null,但是key值如果存在,则会返回原先被替换掉的value值.(当然,map中的key和value都允许是null). Map ...

  6. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行 ...

  7. java中map类型_Java中Map类型遍历的两种方式对比

    Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...

  8. java中Map遍历的四种方式

    java中Map遍历的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方 ...

  9. map操作 java,Java中Map基本操作

    Java中Map基本操作 void:clear() 清空集合中所有的对 boolean:containsKey(Object key) 判断是否包含指定的键 boolean:containsValue ...

  10. Java中sort实现降序排序

    Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...

最新文章

  1. 关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解
  2. 从GPT-3到DETR,一起来盘点2020有哪些突破?
  3. 消息模式Toast.makeText的几种常见用法
  4. 同一个页面,两次请求保证查询条件不变(题目不太相符,我比较渣,问题都不知道怎么表述!--)...
  5. java中的文件_JAVA中文件的操作
  6. c 语言字符串转二进制,在C ++中将字符串转换为二进制序列
  7. javascript变量中基本类型和引用类型的详解解读
  8. WeChall_PHP-0817
  9. .net core 2.0学习笔记(一):开发运行环境搭建
  10. redhat linux配置RSH遇见的问题
  11. 【OpenGL】OpenGL视图和模型变换中各变换发生顺序的思考
  12. python猴子偷桃递归_C++猴子偷桃问题
  13. callback函数_Nodejs 源码解析 util.promisify 如何将 Callback 转为 Promise
  14. 为什么要baidu/Google问题 尽量少在群里问问题
  15. 多个折线样式_Python数据可视化实例:关于图表“贵族”折线的增强优化方法
  16. vs2008中文版提供下载(包含中文msdn)
  17. 在线电子名片html,HTML5 个人信息卡片(电子名片)模板
  18. ST-LINK烧录stm32程序步骤
  19. 自动驾驶创业方向有变化?如何突破技术瓶颈?
  20. 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用

热门文章

  1. FabFilter Total Bundle 2021 mac版:14个专业的FabFilter插件(含安装与卸载)
  2. openssl/ssl.h,No such file or directory
  3. Duplicate spring bean id
  4. Android与物联网设备通信-网络模型分层
  5. C语言实现的Python扩展模块
  6. 删除一个目录下的所有文件,但保留一个指定文件
  7. 渠道效果五步优化,让采购的流量物超所值
  8. 【产品 设计】入门 - 工具篇 - Sketch + Skala Preview
  9. Eclipse中添加Android系统jar包
  10. 面向对象三大特征:封装、继承、多态