Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对对象数组排序?_Java - Fatal编程技术网

Java 如何对对象数组排序?

Java 如何对对象数组排序?,java,Java,我有一个像这样的对象数组 Player p[] = new Player[t]; 每个对象都有一个整数变量和一个名称变量 public class Player { public String player_name; public int number; } 从用户获得输入后,如何根据对象数组的数字变量对其进行排序?创建一个实现比较器的类,称为sayPlayerComparator。通过创建一个包含两个Players的。返回负数、零或正数,具体取决于第一个播放器是否被视为小于、

我有一个像这样的对象数组

Player p[] = new Player[t];
每个对象都有一个整数变量和一个名称变量

public class Player {
   public String player_name;
   public int number;
}

从用户获得输入后,如何根据对象数组的数字变量对其进行排序?

创建一个实现
比较器的类,称为say
PlayerComparator
。通过创建一个包含两个
Player
s的。返回负数、零或正数,具体取决于第一个
播放器
是否被视为小于、等于或大于第二个
播放器


然后,您可以创建您的
PlayerComparator
并将其(连同您的数组)传递给。

使用Java SE 8,尝试类似(未测试)的操作:

编辑

Player p[] = new Player[t];
// do stuff
Arrays.sort(p);
仔细想想,在这种情况下这可能更有效,因为它不会创建新的数组/集合:

Arrays.sort(p, (p1, p2) -> Integer.compare(p1.number, p2.number));

让您的自定义类实现
Comparable
接口,然后您可以使用java集合对数组进行排序(
Arrays.sort()
函数)


最简单的方法是使
播放器
实现
可比
,并在
播放器
中实现
比较(播放器)
方法:

public int compareTo(Player player) {
  return this.number-player.number;
}

然后,只要调用
Arrays.sort(p),就可以对数组进行排序

您需要在number变量上有一个getter才能使其工作,如:

public class Player {
   public String player_name;
   public int number;

   public int getNumber() {
       return number;
   }
}
然后,从Java 8开始,您可以使用
Comparing
factory类对其进行排序:

Player[] p = new Player[t];
Arrays.sort(p, Comparator.comparingInt(Player::getNumber));
这将:

  • 通过比较
    getNumber
    方法中的no,创建一个
    比较器
  • 这里您看到的是一个方法引用,它是lambda
    p->player.getNumber()
    的缩写,它将播放器映射到数字

Ref.(这是一个列表,然后请参阅)阅读
数组。排序
比较器
将你的眼睛转向右边的“相关”部分,你会发现你的问题的几十个重复项。+1在lambdas中思考:)注意,这可能不适用于大的负值。最好使用整数。比较
public class Player {
   public String player_name;
   public int number;

   public int getNumber() {
       return number;
   }
}
Player[] p = new Player[t];
Arrays.sort(p, Comparator.comparingInt(Player::getNumber));