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;
 }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-18
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 操作。
第2个回答  2013-09-18
将你的每一个数组的最后一个数放在num[]整形数组中,然后调用方法
Arrays.sort(num)(升序);

System.out.println("从大到小输出:");
for (int m = num.length-1; m >=0; m--) {
System.out.println(num[m]);//从大到小输出
}
}追问

可是你这输出来的 就只有那个数的排序吧?还有别的内容要一起显示出来呢?

本回答被网友采纳
第3个回答  2013-09-18
数组中的元素现在是一个对象,只要获取对象的属性值,然后对数组进行排序即可。
第4个回答  2013-09-18
最后一个数值是Student的什么属性呢?
可以对s[i].属性这个值进行排序,可用冒泡排序
相似回答