for-有个 关于 Collections.sort 排序的问题 请教大神门哈

问题描述

有个 关于 Collections.sort 排序的问题 请教大神门哈

for (RefractionCollection collection : refractionCollections) {

        List<RefractionCollection> list2 = new ArrayList<RefractionCollection>();

        list2.add(collection);

        Collections.sort(list2);

}

假设现在 这个list 2 里面有四个数据, dog, cat ,bird, fish.

我现在想自定义一个排列数据,不是按照字母的升序或者降序。 请问怎么做到呀?比如说 fish, cat dot bird

解决方案

使用public static void sort(List list, Comparator<? super T> c)

Collections.sort(list2, new Comparator(){
public int compare(Object o1, Object o2) {
return -o1.compareTo(o2);
}
});

解决方案二:

如果数据类型是自定义的也可以是想IComparable接口。

解决方案三:

 自己实现一个Comparator,传入两个对象,你返回一个数字,>0表示第一个大,<0表示第二个大,=0表示相等
注意,比较规则必须是偏序的。
比如a > b,b > c,那么不能c > a。如果你的比较规则不是偏序的(比如说你随机产生一个-1~1的数字作为比较器的返回),排序算法可能会出现诡异的错误。
时间: 2024-09-18 21:22:51

for-有个 关于 Collections.sort 排序的问题 请教大神门哈的相关文章

new-麻烦大伙帮忙用Collections.sort 排序一下 这个自定义的属性

问题描述 麻烦大伙帮忙用Collections.sort 排序一下 这个自定义的属性 List glass = new ArrayList(glassesRefractionCollections); Collections.sort(glass, new Comparator() { @Override public int compare(R g1, R g2) { return //请看底下的排列顺序 } }); 要按照这个顺序排序 cycloplegic, manual, refract

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

Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的. compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.

求解答-做web开发,让我在通知管理加一个级别选择字段和排序字段,求大神帮帮忙~

问题描述 做web开发,让我在通知管理加一个级别选择字段和排序字段,求大神帮帮忙~ 级别就是紧急和一般:排序就是按照1.2.3.4...排序.我做的是web开发,系统通知管理的界面,然后紧急通知,首页的通知变红. 解决方案 数据库中通知表中增加这样一个字段,然后在添加通知的时候,将这个字段管理起来,然后前台aspx页面在显示的时候读取该字段,然后让新闻内容变颜色不就可以了嘛

请教大神java中排序的问题

问题描述 请教大神java中排序的问题 网上找排序的资料,有的说第一个是冒泡,有的说第二个,个人感觉第二个,但是不确定,求大神教我, public static void mySort1(int[] data){ for (int i = 0; i < data.length; i++) { for (int j = i; j < data.length; j++) { if(data[i] < data[j]) { int tmp = data[i]; data[i] = data[j

java-数组排序的问题求大神指教

问题描述 数组排序的问题求大神指教 java中数组按照从小到大排序输出后,如何再输出原来的数组(现在的情况是排序输出后,原来的数组元素也都是按从小到大的顺序输出了) 解决方案 没听懂楼主的意思,你把原数组复制一遍,对他的复制体排序输出喽,原数组直接输出就是原来的顺序了 解决方案二: 你应该是针对原数组排序的,建议复制一份,再排. 解决方案三: 数组排序,本质上数组变量是指针,排序之后,数组指向的内存区域的数据顺序已经发生改变了. 所以不可以再输出原来的数组了.请问你仅仅是想输出原来的数组呢,还是

用Java集合中的Collections.sort方法如何对list排序(两种方法)_java

第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

new person-简单的Collections.sort 方法。 大伙看下,帮忙补充一下 这个方法好么。。

问题描述 简单的Collections.sort 方法. 大伙看下,帮忙补充一下 这个方法好么.. import java.util.ArrayList; import java.util.Collections; public class StringSorting { public static void main(String[] args) { ArrayList persons = new ArrayList(); persons.add(new Person("Sam"))

Collections.sort()对HashMap里的键值对按照键进行排序

MainActivity如下: package cn.testhashmapsort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bundle; import android.app.Act

安卓开发之Collections.sort方法对list按时间排序

compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序. 一直都没有接触排序,突然要实现对List的排序,找了一下资料