java arraylist 的sort怎么用
发布网友
发布时间:2022-04-22 22:52
我来回答
共1个回答
热心网友
时间:2023-10-07 06:55
在排序中,最重要的是自己实现自己的比较的行数,即是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);方法对容器进行排序。
}
}
用Java中ArrayList类实现一个冒泡排序
public static <T> void sort(List<T> list,Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元素,c.compare(e1, e2) 不得抛出 ClassCastException)。此排序被保证是稳定的:不...
java中的SORT怎么用
List<User> list = new ArrayList<User>();//此处add user2再add user1 list.add(user2);list.add(user1);Collections.sort(list);for(User u : list){ System.out.println(u.getName());} } 第二种方法是根据Collections.sort重载方法来实现,例如:public static void main(String[] arg...
java中list里面存放map,根据map中的某两个个字段进行排序
用Collections.sort(List list, Comparator c)实现一个Comparator即可 public class MyComparator implements Comparator { public int compare(Object o1, Object o2) { Map m1=(Map)o1, m2=(Map)o2;//从m1与m2取字段值然后比较,大于返回1,等于返回0,小于返回-1 } public boolean equals(Object ...
为什么我的ArrayList点不出sort()方法?我的是jdk1.8
public void listSort1(){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(55); list.add(9); list.add(0); list.add(2); Collections.sort(list);//使用Collections的sort方法 for(int a :list){ System.out.println(a); } ...
C# arraylist 排序
可以使用ArrayList的Sort()方法 使用Sort方法,可以对集合中的元素进行排序。Sort有三种重载方法,声明代码如下所示。public void Sort();//使用集合元素的比较方式进行排序public void Sort(IComparer comparer);//使用自定义比较器进行排序public void Sort(int index, int count, IComparer comparer)//...
java ArrayList<Integer>如何从小到大排列?
public static void main(String args[]) { ArrayList<Integer> list = new ArrayList<Integer>();for (int i = 0; i < 10; i++) { list.add((int) (Math.random() * 100));} Collections.sort(list);System.out.println(Arrays.toString(list.toArray()));} ...
java 怎么将List里面数据排序
第一点,由结果看出Collections.sort(arrayList1),是以String的ASCII码进行排序的,为了证明这一点,就要看原代码,这时你就会发现JDK中String的compareTo方法是个空实现,底层并不是用java写的,这点没事,我们可以用一定的方法让它把特征暴露出来,然后就可以理解思想。你看我下面写的小测试程序就会明白...
java中用到ArrayList.sort()为什么会出现“使用了未经检查或不安全的...
存在类型匹配隐患,在个人用一般没问题,自己能确认类型无误,在main()上面加@SuppressWarnings("unchecked")就行 要是给别人用或者教常用和可能以后需要扩展,还是改了好。1,.Student类的定义改为class Student implements Comparable<Student> 2.类中的方法改为 public int compareTo(Student s) { ret...
java如何对ArrayList中对象按照该对象某属性排序
有几个方法可以实现:让 Student 实现Comparable接口,或是实例化一个比较器,现在用 Comparator 比较器实例来做一个:ComparableTest.java import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class ComparableTest { public static void main(String[] args) { Co...
java数组sort()方法降序怎么排
java数组sort()方法降序方式:用Arrays类sort()对数组元素进行降序排列 import java.util.Arrays;class SortDemo { public static void main(String[] args){ int[] vec={0,15,-14,45,20,70};Arrays.sort(vec);System.out.println("/n");System.out.println("降序排列:");for (int i=vec...