java 对象数组 排序_如何在Java中对对象数组进行排序?

您有两种方法可以使用Arrays实用程序类实现Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。

在对象所在的类中实现Comparable接口,并将数组传递给只接受一个参数的sort方法。

例class Book implements Comparable {

public String name, id, author, publisher;

public Book(String name, String id, String author, String publisher) {

this.name = name;

this.id = id;

this.author = author;

this.publisher = publisher;

}

public String toString() {

return ("(" + name + ", " + id + ", " + author + ", " + publisher + ")");

}

@Override

public int compareTo(Book o) {

// usually toString should not be used,

// instead one of the attributes or more in a comparator chain

return toString().compareTo(o.toString());

}}@Testpublic void sortBooks() {

Book[] books = {

new Book("foo", "1", "author1", "pub1"),

new Book("bar", "2", "author2", "pub2")

};

// 1. sort using Comparable

Arrays.sort(books);

System.out.println(Arrays.asList(books));

// 2. sort using comparator: sort by id

Arrays.sort(books, new Comparator() {

@Override

public int compare(Book o1, Book o2) {

return o1.id.compareTo(o2.id);

}

});

System.out.println(Arrays.asList(books));}

产量[(bar, 2, author2, pub2), (foo, 1, author1, pub1)]

[(foo, 1, author1, pub1), (bar, 2, author2, pub2)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值