我有一个对象阵列等如何对对象数组进行排序?
Player p[] = new Player[t];
而且每个对象具有一个整数变量和名称变量。
public class Player {
public String player_name;
public int number;
}
从用户获得输入后,我怎么能根据它们的数量变量对这个对象数组进行排序?
我有一个对象阵列等如何对对象数组进行排序?
Player p[] = new Player[t];
而且每个对象具有一个整数变量和名称变量。
public class Player {
public String player_name;
public int number;
}
从用户获得输入后,我怎么能根据它们的数量变量对这个对象数组进行排序?
最简单的方法是使Player
实施Comparable<Player>
,并执行内部Player
的compareTo(Player)
方法:
public int compareTo(Player player) {
return this.number-player.number;
}
然后,无论你想排序数组,只需ca LL Arrays.sort(p);
请注意,这可能不适用于大数目的负值。更好地使用'Integer.compare' – Puce
创建一个实现Comparator<Player>
的类,称为PlayerComparator
。通过创建一个需要两个Player
的compare
method来实现该接口。根据第一个Player
是否小于,等于或大于第二个Player
,返回负数,零或正数。
然后,您可以创建您的PlayerComparator
并将它(连同您的阵列)传递给Arrays.sort
。
使用Java SE 8尝试像(未经测试):
Arrays.stream(p).sorted((p1, p2) -> Integer.compare(p1.number, p2.number)) .collect(Collectors.toList())
编辑
关于第二个想法,这可能是在这种情况下更有效,因为它不创建一个新的数组/集:
Arrays.sort(p, (p1, p2) -> Integer.compare(p1.number, p2.number));
用于在lambdas中进行思考的问题:) – mdm
让你自定义的类实现Comparable
接口,然后你可以使用Java集合排序哟乌尔阵列(Arrays.sort()
功能)
public class Player implements Comparable<Player> {
public String player_name;
public int number;
@Override
public int compareTo(Player object) {
return this.player_name.compareTo(object.player_name);
}
}
排序
Player p[] = new Player[t];
// do stuff
Arrays.sort(p);
你需要对数可变吸气这个工作,如:
public class Player {
public String player_name;
public int number;
public int getNumber() {
return number;
}
}
然后,如Java 8中,您可以通过使用Comparing
工厂类对其进行排序:
Player[] p = new Player[t];
Arrays.sort(p, Comparator.comparingInt(Player::getNumber));
这将:
Comparator<Person>
,通过比较没有getNumber
方法。p -> player.getNumber()
的缩写,它将玩家映射到数字。
Ref。 HTTP://计算器。com/questions/2784514/sort-arraylist-of-custom-objects-by-property?rq = 1(这是一个List,然后参见[Arrays.sort](http://docs.oracle.com/javase/7) /docs/api/java/util/Arrays.html#sort(T[],%20java.util.Comparator))) – user2864740
阅读关于'Arrays.sort'和'比较器' –
转动你的眼睛在右边,到“相关”部分,你会发现几十个重复的问题。 –