java 实现ArrayList的sort

java怎么做ArrayList<Job>的sort?? Job(int a,int b,int c), 可不可以做2个不同的sort一个是按a的顺序排序 另一个是按c的顺序排序??谢谢

java中可以使用Sort方法,可以对集合中的元素进行排序。Sort有三种重载方法,声明代码如下所示。

public void Sort();
//使用集合元素的比较方式进行排序

public void Sort(IComparer comparer);
//使用自定义比较器进行排序

public void Sort(int index, int count, IComparer comparer)
//使用自定义比较器进行指定范围的排序

注意:为使用Sort方法进行排序,集合中的所有元素必须实现IComparable接口,否则,将抛出异常。

这里介绍使用第一种方法进行简单的排序实例

using System;
using System.Collections;
class Program{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.AddRange(new string[8] { "Array1", "Array2", "Array3", "Array5", "Array4", "Array8", "Array7", "Array6" });
al.Sort();
foreach (string s in al)
{
Console.WriteLine(s);
}
Console.ReadLine();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-06
在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator
实现方法 public int compare(Object o1, Object o2) 最为重要..

举个例子:
package book.arrayset;

import java.util.Comparator;

/**
* 整数比较器,将整数按降序排列
*/
class MyIntComparator implements Comparator{

/**
* o1比o2大,返回-1;o1比o2小,返回1。
*/
public int compare(Object o1, Object o2) {
int i1 = ((Integer)o1).intValue();
int i2 = ((Integer)o2).intValue();
if (i1 < i2){
return 1;
}
if (i1 > i2){
return -1;
}
return 0;
}
}

//上面的为比较的函数实现,下面真正的添加数据,

//通过调用上面的比较函数实现自定义排序的功能

package book.arrayset;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* 对List中的元素排序
*/
public class SortList {

public static void output(List list){
if (list == null){
return;
}
for (int i=0; i<list.size(); i++){
System.out.print(list.get(i).toString() + " ");
}
System.out.println();
}

public static void main(String[] args) {
List list = new ArrayList();
list.add(new Integer(5));
list.add(new Integer(8));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Double(3.1));
System.out.println("list开始状态");
SortList.output(list);
//Collections.sort方法将用默认比较器排列list的元素
Collections.sort(list);
System.out.println("list被默认比较器排序后的状态");
SortList.output(list);
//下面将list的元素按降序排列
Collections.sort(list, new MyIntComparator());
System.out.println("list被自定义比较器排序后的状态");
SortList.output(list);

//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,
//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。
//然后采用Collections.sort(list, comparator);方法对容器进行排序。
}
}
第2个回答  2013-04-13
用集合工具类Collections.sort(list,Comparable),实现一个Comparable接口即可。本回答被提问者采纳
第3个回答  2013-12-16
可以使用Collections工具,可以设置两个比较器 一个是根据是a 一个是根据

定义比较器:
public class ComparatorListSort implements Comparator {

public int compare(Job o1, Job o2) {
if (((Integer) o1).intValue() > ((Integer) o2).intValue()) {
return -1;
} else if (((Integer) o1).intValue() < ((Integer) o2).intValue()) {
return 1;
} else {
return 0;
}

}
}

排序:

//下面将list的元素按降序排列
Comparator comparator = new ComparatorListSort();
Collections.sort(list, comparator);来自:求助得到的回答
第3个回答  2013-12-16
自己写啊,冒泡算法,排序算法等。