java对数组、List、Map排序及常用方法

原创 2016年05月30日 18:59:05

下午真的是睡了一下午,同学笑我太能睡,现在闲下来就写总结一下之前那段时间里学到的。这里写点java 的知识,java在sort上的一些用法吧,之前这里一直都不太熟练,就想着总结一下。
首先是对数组的排序,讲到对数组的排序,就不得不提到Arrays类了,它可以对数组进行排序

import java.util.Arrays;
public class ArraysSort_11 {
    public static void main(String args[])
    {
        int[] a={1,4,-1,5,0};
        Arrays.sort(a);
        //数组a[]的内容变为{-1,0,1,4,5}
        for(int i=0;i<a.length;i++)
            System.out.print(a[i]+"  ");
    }
}
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); //当然,通过Arrays类还可以实现将数组转换为list

public static boolean equals(T[] a,T[] a2)
Arrays.equals(a1,a2)//a1,a2均为数组

java对符合数据进行比较久需要用到比较器了。
 函数原型: (1)public static void sort(T[] a,Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。

      (2)public static void sort(T[] a,int fromIndex,int toIndex,Comparator c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。 
这里就着重强调一下java 对Map的比较大小,可以参考下面这篇文章
http://blog.csdn.net/warhin/article/details/7101180

    public Map<String, String> sortMapByValue(Map<String, String> oriMap) {  
        Map<String, String> sortedMap = new LinkedHashMap<String, String>();  
        if (oriMap != null && !oriMap.isEmpty()) {  
            List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet()); //将map里的实体记录放到list中,然后定义比较器实现实体记录之间的比较。 
Collections.sort(entryList, new   Comparator<Map.Entry<String, String>>() {  
                        public int compare(Entry<String, String> entry1,  
                                Entry<String, String> entry2) {  
                            int value1 = 0, value2 = 0;  
                            try {  
                                value1 = getInt(entry1.getValue());  
                                value2 = getInt(entry2.getValue());  
                            } catch (NumberFormatException e) {  
                                value1 = 0;  
                                value2 = 0;  
                            }  
                            return value2 - value1;  
                        }  
                    });  
            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;  
    }  

List放的是复合类,在比较时,需要定义比较的是类的哪些属性,也需要定义比较器。

List<Employer> list=new ArrayList<Employer>();
      list.add(new Employer(22));
      list.add(new Employer(1));
      list.add(new Employer(233));
      list.add(new Employer(12));
      list.add(new Employer(165));
      Collections.sort(list,new Comparator<Employer>() {
          @Override
          public int compare(Employer o1, Employer o2) {
              return o1.getAge().compareTo(o2.getAge());//最后终结为整型的比较,必须注意的是这里getAge()返回的不是基本类型的int,而是包装类型Integer,Integer类的静态方法compareTo(int i1,int i2)
          }
      });
      for(Employer e:list){
          e.show();
      }

参考链接
blog.sina.com.cn/s/blog_713ff9ea0100nnf5.html
补充一下求Collections中的最大值最小值等的方法
参考链接
http://blog.csdn.net/yinxiaoqi/article/details/7375711

 LinkedList<Integer> list = new LinkedList<Integer>();
  list.add(10);
  list.add(-10);
  list.add(8);
  list.add(-1);
  Comparator<Integer> r = Collections.reverseOrder();//自然顺序的一个反充,从这里就可以定义自己的比较规则,这里是逆序
  Collections.sort(list, r);//list 代表排序的集合  r 代表根据什么排序
  for(Iterator<Integer> iter = list.iterator(); iter.hasNext();){
   System.out.println(iter.next());

  }
  System.out.println();
  Collections.shuffle(list);//shuffle方法是打乱列表
  for(Iterator<Integer> iter = list.iterator(); iter.hasNext();){
   System.out.println(iter.next());
  }


  System.out.println("minimum value: "+ Collections.min(list));//min() 方法最小值
  System.out.println("maximum value: "+ Collections.max(list));//max() 方法最大值 

好啦,完成~~

版权声明:本文为博主原创文章,未经博主允许不得转载。

map和list嵌套数据排序

最近工作中使用rest接口处理有复杂的父子关系的数据,调用rest接口时需要对所有参数签名,其中一个签名规则就是对所有参数排序,参数都是有父子关系的json字符串,可以用map和list的嵌套,再使用...
  • zhuchuangang
  • zhuchuangang
  • 2015年04月13日 09:39
  • 1151

【转载】java List分组和排序处理 Map 应用

package com.common.main.mapAndList;      import java.util.ArrayList;   import java.util.HashMap; ...
  • oJanus1
  • oJanus1
  • 2017年01月06日 21:26
  • 1331

java中list里面存放map,根据map中的某一个字段进行排序

java中list里面存放map,根据map中的某一个字段进行排序 例如:package com; import java.util.ArrayList; import java.util.Co...
  • g631521612
  • g631521612
  • 2013年04月07日 17:18
  • 7432

java基础—常用的集合类有哪些?比如List如何排序?

常用的集合类有哪些?比如List如何排序? Set、List、Map.png Java中常用的集合类 对于集合,大家都不陌生了,常见的集合接口Set、List、Map等,其中Set和List...
  • ITzhangdaopin
  • ITzhangdaopin
  • 2017年12月04日 16:41
  • 213

JAVA中对List<Map<String,Object>>中的中文汉字进行排序

本篇文章,对中文的排序规则为:首个汉字——拼音——首字母,遵循26个英文字母的顺序排列 import java.text.Collator; import java.util.ArrayList; ...
  • Flykos
  • Flykos
  • 2017年01月20日 15:28
  • 1992

Java数组的几种常用操作方法(排序算法及查找)

数组的查找查找是在数组中寻找特定元素的过程。线性查找法线性查找法将要查找的关键字key与数组中的元素逐个进行比较。如果匹配成功,线性查找法则返回与关键字匹配的元素在数组中的下标;如果没有匹配成功,则返...
  • jxq1994
  • jxq1994
  • 2016年07月27日 18:36
  • 1954

List<Map>集合根据Map里某个key对List集合重新排序介绍

本文主要介绍如何对List类型的集合进行重新排序:按照Map中某个键值进行排序。...
  • a1321941138
  • a1321941138
  • 2016年07月14日 14:21
  • 3466

Java 集合转换(数组、List、Set、Map相互转换)

Map、Set转换为List 的方法有很多种,这里我介绍最简单的方法。 1、Map转换为List //map转换为 list //Map map; //List list = new Arra...
  • FX_SKY
  • FX_SKY
  • 2013年08月29日 20:18
  • 101611

List <Map> 排序详解

在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(...
  • changlei_shennan
  • changlei_shennan
  • 2015年10月16日 17:03
  • 3227

JAVA版List<Map>排序,按字符或数字类型排序,支持正序倒序

List排序,按字符或数字类型排序,支持正序倒序,数字排序时处理空字符和非数字排序:空 /** * 数字校验(正、负、小数) * @param s * @return */ pub...
  • ruixue0117
  • ruixue0117
  • 2017年07月08日 19:27
  • 212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java对数组、List、Map排序及常用方法
举报原因:
原因补充:

(最多只允许输入30个字)