java如何对容器内某一个属性排序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

本文要记录的大概内容:

这里记录了一种用Comparable接口对java容器中指定属性排序的方法

提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是Comparable接口

Comparable接口是java中的一个排序比较规则

二、题目要求

定义一个Book类,有名称作者价格三个参数,要求通过比较价格或者名称来排序,最后打印;

三、代码区

##1
第一段代码如下:
首先我们定义一个Book类,实现Comparable接口,注意,在本类的最后要重写compareTo方法,否则会报错,亲测;
class Book implements Comparable {
String name;
int price;
String author;

public Book(String name, int price, String author) {
    this.name = name;
    this.price = price;
    this.author = author;
}

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

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}

@Override
public String toString() {
    return "book={" +
            "name='" + name + '\'' +
            ", price=" + price +
            ", author='" + author + '\'' +
            '}';
}

@Override
public int compareTo(Book o) {
    return new Integer(price).compareTo(new Integer(o.price));
}

}

2.读入数据

这里我创建的类名是根据我学的内容建的,跟题目没太大关系。。

package Download;

import java.util.ArrayList;
import java.util.Comparator;

public class ArrayExercise {
public static void main(String[] args) {
ArrayList arrayList=new ArrayList<>();
arrayList.add(new Book(“高等数学”,5,“徐胜荣”));
arrayList.add(new Book(“线性代”,3,“柳畅”));
arrayList.add(new Book(“程设”,3,“张广梅”));
arrayList.sort(new Comparator() {
@Override
public int compare(Book o1, Book o2) {
int i=o1.compareTo(o2);
if(i==0){
return 0;
}else return i;
}
});
System.out.println(arrayList);
}
}
上面我定义了一个泛型,接受Book对象,然后写入了几个对象;
接着进行排序,ArrayList里面本来就有个sort方法,我们调用sort,然后传参数,注意格式(在敲得时候系统会给你个粗略的模板),我们利用那个模板,根据我们的需要修改细节即可;
!!!注意:
我们要实现对某一个属性排序,最关键的是对compareTo的重写和对compare的重写,我们就是利用重写完成题目的要求,这里我重写的是升序输出;在写compareTo的return语句时,要注意格式,我总结了两个对的
1:int型数据举例: return new Integer(price).compareTo(new Integer(o.price));
2:String型数据举例:return this.getName().compareTo(o.getName);


总结

上述方法对于要判断的属性相同的数据,也会分别打印出来,而不会把他们两个当成一个对象打印出来(TreeSet会),可以通过.size验证,所以我更喜欢使用上述方法进行排序;
这是第一次写博客,嘻嘻;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值