写点什么

set 集合,挑战华为社招

用户头像
极客good
关注
发布于: 刚刚

?? ?}


?? ?public void setPrice(int price) {


?? ??? ?this.price = price;


?? ?}


?? ?@Override


?? ?public String toString() {


?? ??? ?return "user [name=" + name + ", price=" + price + "]";


?? ?}


?? ?public user(String name, int price) {


?? ??? ?super();


?? ??? ?this.name = name;


?? ??? ?this.price = price;


?? ?}


?? ?public user() {


?? ?}


?? ?@Override


?? ?public int compareTo(Object o) {


?? ??? ?user u=(user) o;


?? ??? ?return this.price-u.price;


?? ?}


}


运行输出的结果就会根据 price 排序



这样写也有个弊端,因为不同的模块有不同的需求,对于一张表有不同的排序规则,这个时候这个方法就不合适了,就要用到比较器进行排序


package com.set;



import java.util.Comparator;


import java.util.TreeSet;



public class demo3 {


public static void main(String[] args) {


?? ?TreeSet<users> set = new TreeSet<users>(new price());


?? ?set.add(new users("aaa", 13));


?? ?set.add(new users("ccc", 14));


?? ?set.add(new users("bbb", 12));


?? ?for (users s : set) {


?? ??? ?System.out.println(s);


?? ?}


}


}


class price implements Comparator<users>{


?? ?@Override


?? ?public int compare(users o1, users o2) {


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


?? ??? ?return o1.getPrice()-o2.getPrice();


?? ?}


}


class users{


?? ?private String name;


?? ?private int price;


?? ?public String getName() {


?? ??? ?return name;


?? ?}


?? ?public void setName(String name) {


?? ??? ?this.name = name;


?? ?}


?? ?public int getPrice() {


?? ??? ?return price;


?? ?}


?? ?public void setPrice(int price) {


?? ??? ?this.price = price;


?? ?}


?? ?@Override


?? ?public String toString() {


?? ??? ?return "user [name=" + name + ", price=" + price + "]";


?? ?}


?? ?public users(String name, int price) {


?? ??? ?super();


?? ??? ?this.name = name;


?? ??? ?this.price = price;


?? ?}


?? ?public users() {


?? ?}


?? ?


}


?


直接把 price 类传进去,可以根据不同的排序方式传不同的类,还可以这么写



也可根据 name 的首字母(a-z)排序



用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
set集合,挑战华为社招