Java中怎么取出数组中某个单位的某个值进行排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中怎么取出数组中某个单位的某个值进行排序?相关的知识,希望对你有一定的参考价值。
Student[] s=new Student[5];
s[0]=new Student("西西",59,78,80);
s[1]=new Student("小亿",67,78,70);
s[2]=new Student("咚咚",23,84,77);
s[3]=new Student("李济",69,78,73);
s[4]=new Student("冰芳",76,74,71);
比如我要按每个中的最后一个的值进行从高到低顺序依次打印出来s[]数组?要怎么搞?
sort(T[] a, Comparator<? super T> c)
用这个函数,自定义comparator函数实现最后一个值排序
import java.util.Arrays;import java.util.Comparator;
public class TestDengCha
public static void main(String[] agrs)
Student[] s = new Student[5];
s[0] = new Student("西西", 59, 78, 80);
s[1] = new Student("小亿", 67, 78, 70);
s[2] = new Student("咚咚", 23, 84, 77);
s[3] = new Student("李济", 69, 78, 73);
s[4] = new Student("冰芳", 76, 74, 71);
Arrays.sort(s, new Comparator<Student>()
@Override
public int compare(Student s1, Student s2)
if (s1 != null && s2 != null)
return s1.getEnglish() > s2.getEnglish() ? 1 : (s1.getEnglish() == s2.getEnglish() ? 0 : -1);
return 0;
);
System.out.println(Arrays.toString(s));
class Student
private String name;
private int chinese;
private int math;
private int english;
Student(String name, int chinese, int math, int english)
this.name = name;
this.chinese = chinese;
this.english = english;
public String getName()
return name;
public void setName(String name)
this.name = name;
public int getChinese()
return chinese;
public void setChinese(int chinese)
this.chinese = chinese;
public int getMath()
return math;
public void setMath(int math)
this.math = math;
public int getEnglish()
return english;
public void setEnglish(int english)
this.english = english;
@Override
public String toString()
return "姓名:" + name + " 语文" + chinese + " 数学" + math + " 英语" + english;
参考技术A Collections 类的方法 sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意
e1 和 e2 元素,c.compare(e1, e2) 不得抛出
ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。
指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的
n2 log(n) 性能。
参数:
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException -
如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。 参考技术B 将你的每一个数组的最后一个数放在num[]整形数组中,然后调用方法
Arrays.sort(num)(升序);
System.out.println("从大到小输出:");
for (int m = num.length-1; m >=0; m--)
System.out.println(num[m]);//从大到小输出
追问
可是你这输出来的 就只有那个数的排序吧?还有别的内容要一起显示出来呢?
参考技术C 数组中的元素现在是一个对象,只要获取对象的属性值,然后对数组进行排序即可。 参考技术D 最后一个数值是Student的什么属性呢?可以对s[i].属性这个值进行排序,可用冒泡排序
以上是关于Java中怎么取出数组中某个单位的某个值进行排序?的主要内容,如果未能解决你的问题,请参考以下文章