java对数组、List、Map排序及常用方法
2016-05-30 18:59
627 查看
下午真的是睡了一下午,同学笑我太能睡,现在闲下来就写总结一下之前那段时间里学到的。这里写点java 的知识,java在sort上的一些用法吧,之前这里一直都不太熟练,就想着总结一下。
首先是对数组的排序,讲到对数组的排序,就不得不提到Arrays类了,它可以对数组进行排序
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
List放的是复合类,在比较时,需要定义比较的是类的哪些属性,也需要定义比较器。
参考链接
blog.sina.com.cn/s/blog_713ff9ea0100nnf5.html
补充一下求Collections中的最大值最小值等的方法
参考链接
http://blog.csdn.net/yinxiaoqi/article/details/7375711
好啦,完成~~
首先是对数组的排序,讲到对数组的排序,就不得不提到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() 方法最大值
好啦,完成~~
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树