我有一个以名称和价格为属性的抽象类我有三个基本类书籍、鞋子和卡片,分别有作者、大小和数量属性以及其他几个属性
我有一个驱动程序类,在那里我实现了一个链表,要求用户输入信息并形成一个链表我试图展示三种不同的东西1( 仅按作者姓名排序的书籍2( 仅按尺码排序的鞋子
我试图在驱动程序类中实现我的比较器,目前有一个重写的方法
Collections.sort(items, new Comparator()
{
@Override
public Boolean compare(double s1, double s2)
{ return s1 < s2; }
}
)
程序出现未解决的编译错误我需要了解我是否必须在所有类中实现comparator,或者只实现驱动程序,并且可以将我的三种超越方法
还有我可能做错了什么
- 如果您有编译错误,最好能看到:-(
- 您需要定义排序将如何比较所有类的实例的方式
为此,您的类需要实现Comparable接口,或者需要提供Comparator。对于自然顺序,最好实现Comparable接口
根据您所写的内容,您可以实现如下所述:
class Driver {
public static void main(String[] args) {
List<Item> list = Arrays.asList(new Book("author1"),
new Book("z-author2"),
new Book("g-author2"),
new Shoe(39),
new Shoe(40),
new Shoe(41),
new Shoe(1),
new Shoe(2));
//ONLY books sorted by authors name
List<Item> books = list.stream()
.filter(o -> o instanceof Book)
.sorted(Comparator.comparing(o -> ((Book) o).getAuthor()))
.collect(Collectors.toList());
//only shoes sorted by size
List<Item> shoes = list.stream()
.filter(o -> o instanceof Shoe)
.sorted(Comparator.comparing(o -> ((Shoe) o).getSize()))
.collect(Collectors.toList());
System.out.println(books);
System.out.println(shoes);
}
}
public abstract class Item {
String name;
int price;
}
class Book extends Item {
String author;
public Book(String author) {
this.author = author;
}
public String getAuthor() {
return author;
}
public String toString() {
return "author:" + author;
}
}
class Shoe extends Item {
int size;
public Shoe(int size) {
this.size = size;
}
public int getSize() {
return size;
}
public String toString() {
return "size:" + size;
}
}
class Card extends Item {
int quantity;
public Card(int quantity) {
this.quantity = quantity;
}
}
(代码可编译(
不过你的问题还不清楚。你可以写一些代码,并提供更多关于你所说的错误的信息。
我想明白了。所以我所有的类都有几个属性,我只需要比较其中的一个,根据它进行排序并显示
--用户输入,从不同类型的对象中,我们制作其他较小的链表来提取信息
例如:鞋、卡、书、鞋、卡——用户输入~然后制作类型书的作者链接列表,并对作者进行排序显示