`

Collections.sort排序的用法

    博客分类:
  • JAVA
 
阅读更多
private void sortScene(Movie m){
  if(m != null){
   m.getSceneList().addAll(m.getScenes());   
   //Sort the Scene List
   Collections.sort(m.getSceneList());   
     }
 }
     因为Movie实体里面的private Set<Scene> scenes = new HashSet<Scene>(0);是Set集合,所以没有重复的元素。
private List<Scene> sceneList = new ArrayList<Scene>(0); 有因为Collections.sort(List list)里面需要List,
所以就构造了sceneList这个参数。
 

 

Scene实体要实现Comparable接口,所以必须实现其中的方法。
public class Scene extends BaseEntity implements Comparable<Scene>{
public int compareTo(Scene o) {
int ret = this.seq == null ? (o.seq == null ? 0 : -1): (o.seq == null ? 1 : (this.seq==0?(o.seq==0?0:1):(o.seq == 0?-1:(this.seq - o.seq))));
	if (ret == 0) {
		return this.getId().compareTo(o.getId());
	} else {
		return ret > 0 ? 1 : -1;
	}
   }
}

 上面是当seq=0的时候需要排列在最后面而已,所以有了上面的排序代码。通用的代码如下:

public int compareTo(Scene o) {
  int ret = this.seq==null?(o.seq==null?0:-1):(o.seq==null?1:(this.seq - o.seq));
  if(ret == 0)
  {
   return this.getId().compareTo(o.getId());
  }else{
   return ret>0?1:-1;
  }
 }

 

   要充分理解排序就必须先理解最后的return 0, -1 , 1  这三个数字代表的含义。它们不是代表数字而是代表前面和后面要比较的值哪个大哪个小?如果是0表示要比较的这两个数字相等。如果是1表示前面数字大,如果-1表示前面数字小。要理解这个就没问题了。

    在写这个比较规则的时候,千万不要想着套数字进去来进行比较,就想着前面数字和后面数字比较,如果前面大就return 1,否则return -1.

分享到:
评论

相关推荐

    java中Collections.sort排序函数用法详解

    本篇文章主要介绍了java中Collections.sort排序函数用法详解,非常具有实用价值,需要的朋友可以参考下。

    C# 中 List.Sort运用(IComparerT)排序用法

     List&lt;T&gt;.Sort 方法 (IComparer)的方法解释地址如下:  http://msdn.microsoft.com/zh-cn/library/234b841s(v=vs.110).aspx  使用指定的比较器对整个 List&lt;T&gt; 中的元素进行排序。  命名空间: System....

    C#基础教程之IComparable用法,实现ListT.sort()排序

    List&lt;T&gt;.sort()可以实现对T的排序,比如List&lt;int&gt;.sort()执行后集合会按照int从小到大排序。如果T是一个自定义的Object,可是我们想按照自己的方式来排序,那该怎么办呢,其实可以用过IComparable接口重写CompareTo...

    Java对象排序、中文排序、SortedSet排序使用和源码讲解

    但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,通过:Collections.sort(list)那么这个list被排序了...

    CustomComparator:此 jar 可帮助您根据对象内的字符串值对对象进行排序

    使用 Collections.sort 方法对对象列表进行排序,并传递带有被比较类的 CustomComparator 对象,用于排序的方法名和类类型 例如: public static List&lt;Grades&gt; getSortedList(List&lt;Grades&gt; gradeList, Class&lt;?&...

    java-server-interview-questions:java服务端面试题整理

    答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort实现的。TimSort算法就是找到已经排好序数据的子序列,然后对剩余部分排序,然后合并起来. foreach和while的区别(编译之后) 线程池的种类...

    Collections源码java-Factory:下面给出的.pdf文件中的代码距离OO还很短。OhNo_NoOO.pdf您的工作是将代码重

    集合原始java 工厂 下面给出的.pdf文件中的代码距离OO还很短。 OhNo_NoOO.pdf您的工作是将代码重构为适当的层次结构。...使用Collections.sort()对ArrayList进行排序。 为了使Collections.sort()起作用,Array

    排序算法的Java实现全攻略

    主要介绍了排序算法的Java实现,包括Collections.sort()的使用以及各种经典算法的Java代码实现方法总结,超级推荐!需要的朋友可以参考下

    java抢票软件源码-interview:java面试题整理

    Collections.sort算法调用的是合并排序。 Arrays.sort() 采用了2种排序算法 -- 基本类型数据使用快速排序法,对象数组使用归并排序。 String,StringBuffer和StringBuilder的区别; 解答: Object的方法有哪些:比如有...

    leetcode不会-Leetcode:力码

    Collections.sort(List,Comparator) 对列表进行排序 反向链表(给定链表反向部分的长度) ListNode start = pre.next; ListNode then = start.next; //key part of reversing given length linkedlist for(int i =...

    C#实验报告(1).doc

    掌握数组和字符串的使用方法. 实验仪器设备,药品,器材:Microsoft visual studio 2010 实验原理:熟悉visual studio.net 2010的基本操作方法. 认真阅读本章相关内容,尤其是案例. 实验前进行程序设计,完成源程序的编写...

    java排序源码-EarthQuakeSorter:在线课程“Java编程:杜克大学的软件设计原理”的EarthQuakeStarterPro

    java排序原始代码EarthQuakeSort 在线课程“ Java编程:杜克大学软件设计原理”的EarthQuakeStarterProgram作业的源代码-...2-第二种方法使用collections.sort()方法,该方法使用了非常高级的排序算法(MergeSort)。

    java版斗地主源码-PokerSystem:更新小案例,巩固学习Java面向对象思想

    Collections.sort(arrayList) 调用排序算法 注: 更多详情参见本项目更高版本的说明文档,或者API开发文档 功能实现: 牌面组合 洗牌 发牌 看牌 源码如下: package com.kris.landlords; /** * 主程序 * * @author: ...

    java常用工具类的使用

    SimpleDateFormat是DateFormat的子类,用法和DateFormat类基本一致,主要使用format()方法。 代码演示:SimpleDateFormat进行日期转换 import java.text.SimpleDateFormat; import java.util.Date; public class ...

    collections_practice-web-0916

    请记住, .sort包含一个块,您可以在其中指定希望数组排序的方式。 问题3: #sort_array_char_count 构建一个sort_array_char_count方法,该方法接受一个字符串数组,并返回该数组的副本,其中该字符串具有按长度...

    collections_practice-v-000

    请记住, .sort包含一个块,您可以在其中指定希望数组排序的方式。 问题3: #sort_array_char_count 构建一个sort_array_char_count方法,该方法接受一个字符串数组,并返回该数组的副本,其中该字符串具有按长度...

    collections_practice-onl01-seng-pt-070620

    请记住, .sort包含一个块,您可以在其中指定希望数组排序的方式。 问题3: #sort_array_char_count 构建一个方法sort_array_char_count ,该方法接受一个字符串数组,并返回该数组的副本,其中该字符串的长度按...

    collections_practice-onl01-seng-pt-030220

    收款实务目标精通处理数组练习使用更高级别的Ruby枚举器(如.collect和.sort指示本实验的目标是精通处理阵列。 尝试尝试使用内置的Ruby方法以及实现自己的逻辑来解决这些问题。 编写解决每个rspec测试的方法。问题1...

    Linq基础学习资料,通俗易懂

    5.13.2 ArrayList.Sort (IComparer) 方法 13 5.14 IComparer &lt;T&gt; 14 5.14.1 接口方法override int Compare(T x, T y)说明 14 5.14.2 List.Sort (IComparer) 方法 14 5.15 System.Linq.IGrouping&lt;T&gt; 14 5.16 ...

    Python–HackerRank习题

    打印成绩倒数第二的同学名字3,使用zip(*[iter(s)]*5)按照指定长度5,截取字符串4,计数类collections.Counter5,统计字符串中字母出现次数 并按频次排序6,将数据切分成各重叠段,统计各段数值,重叠次数*方法一,我...

Global site tag (gtag.js) - Google Analytics