专栏首页技术圈java对数组、List、Map排序及常用方法

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

下午真的是睡了一下午,同学笑我太能睡,现在闲下来就写总结一下之前那段时间里学到的。这里写点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() 方法最大值 

好啦,完成~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • KMP、BM、Sunday等字符串匹配算法及实现

    发现字符串的匹配完全要考虑全面,如果考虑的情况不足够全面,就很可能出现这个例子可以运行,下一个例子的就行不通,毕竟匹配可能遇到各种各样的情况。本着可以实现效果就...

    张凝可
  • 补充:MongoDB的理论知识

    发现太久没用以至于已经忘记了。所以这里想总结一下MongoDB,信息可以比较杂,但是以后即便忘记了也能返回来看一看,开始~~

    张凝可
  • Universal Language Model Fine-tuning for Text Classification

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    张凝可
  • python爬取新浪股票数据—绘图【原创分享】

    逆向小白
  • 用TensorFlow做Kaggle“手写识别”达到98%准确率-详解

    这是一个TensorFlow的系列文章,本文是第三篇,在这个系列中,你讲了解到机器学习的一些基本概念、TensorFlow的使用,并能实际完成手写数...

    用户1332428
  • 深度 | 向手机端神经网络进发:MobileNet压缩指南

    机器之心
  • 深入理解卷积神经网络中的卷积

    小白也能看懂的TensorFlow上手系列 作者 | Divyanshu Mishra

    磐创AI
  • 【从零学习OpenCV 4】图像卷积

    过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟...

    小白学视觉
  • 维基解密本周更新: CIA Vault 7系列新工具HighRise出现,你的短信分分钟能被窃取

    大数据文摘
  • WebService就是这么简单

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧…. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那...

    Java3y

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动