700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 对象数组根据多个属性排序

对象数组根据多个属性排序

时间:2021-02-09 13:42:03

相关推荐

对象数组根据多个属性排序

先整点咖啡豆

package rank;public class Player {private Integer age;private Integer score;private String name;private String feature;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getFeature() {return feature;}public void setFeature(String feature) {this.feature = feature;}public Player(Integer age, Integer score, String name, String feature) {this.age = age;this.score = score;this.name = name;this.feature = feature;}@Overridepublic String toString() {return "Player{" +"age=" + age +", score=" + score +", name=" + name +", feature='" + feature + '\'' +'}';}}

然后排序测试

package rank;import java.util.ArrayList;import java.util.List;public class Test {public static void main(String[] args) {// 诸神归位Player p1 = new Player(15,70,"韦鲁斯","反向Q");Player p2 = new Player(16,4396,"李青","假装打野,趁机惩戒炮车");Player p3 = new Player(17,30,"琴女","RNobody");Player p4 = new Player(18,20,"杰斯","瓦尔基里俯冲,次元穿越TP");Player p5 = new Player(16,888,"薇恩","洗澡");// 构建全明星阵容List<Player> list = new ArrayList<>();list.add(p1);list.add(p2);list.add(p3);list.add(p4);list.add(p5);// 先亮相for (Player player : list) {System.out.println(player.toString());}// 对象数组,根据多个元素排序,核心思想利用Comparator接口,重写下compare方法,这里用Lambda写法list.sort((player1, player2) -> {// 排序优先级:先年龄,再评分,如要逆序的话,可以用reversed()方法if (player1.getAge() > player2.getAge()) {// 如果顺序则返回整数return 1;} else if (player1.getAge() < player2.getAge()) {// 反之返回负数return -1;} else {// 年龄相等就用第二个参数评分排序,多个参数依此类推,这里用两个参数排序return player1.getScore().compareTo(player2.getScore());}});// 诸神排位,再显神威System.out.println("LPL三连冠");for (Player player : list) {System.out.println(player.toString());}}}

最终效果

Player{age=15, score=70, name=韦鲁斯, feature='反向Q'}Player{age=16, score=4396, name=李青, feature='假装打野,趁机惩戒炮车'}Player{age=17, score=30, name=琴女, feature='RNobody'}Player{age=18, score=20, name=杰斯, feature='瓦尔基里俯冲,次元穿越TP'}Player{age=16, score=888, name=薇恩, feature='洗澡'}LPL三连冠Player{age=15, score=70, name=韦鲁斯, feature='反向Q'}Player{age=16, score=888, name=薇恩, feature='洗澡'}Player{age=16, score=4396, name=李青, feature='假装打野,趁机惩戒炮车'}Player{age=17, score=30, name=琴女, feature='RNobody'}Player{age=18, score=20, name=杰斯, feature='瓦尔基里俯冲,次元穿越TP'}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。