gpt4 book ai didi

使用 Collections.sort 的 Java 特定练习

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:10 25 4
gpt4 key购买 nike

我有这个 Test 类,我必须编写其他类代码才能传递断言。那是 Test 类:

import java.util.*;

public class Test
{
public static void main(String[] args)
{
Book javabook = new Book("Learn Java",150);
Book cbook = new Book("C",120);
Book[] books = new Book[] {javabook, cbook};

Library lib = new Library(books);
assert(lib.pages() == 270);

List l = lib;
assert(l.size() == 2);

Collections.sort(l);

assert(l.get(0) == cbook);
assert(l.get(1) == javabook);
}
}

我开始制作 Book 类,这是我的实现:

public class Book implements Comparable
{
private String name;
private int pages;

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

public int getPages()
{
return this.pages;
}

public int compareTo(Object obj)
{
if(this == obj) return 0;
else
{
Book x = (Book) obj;
return this.pages - x.pages;
}
}
}

然后我写了Library类:

import java.util.*;

public class Library extends ArrayList
{
ArrayList a;

public Library(Book[] b)
{
a = new ArrayList(b.length);
for(int i=0; i<b.length; i++)
{
a.add(b[i]);
}
}

public int pages()
{
int p = 0;
for(int i=0; i<a.size(); i++)
{
p += ( (Book) a.get(i) ).getPages();
}
return p;
}

public int size()
{
return a.size();
}

public Object get(int i)
{
return a.get(i);
}
}

我认为问题出在 Library 类上,似乎 Collections.sort 不起作用,我无法在调用测试类中的方法排序!我不知道我的代码有什么问题,有人可以帮我吗?

记住:我必须编写代码才能通过断言我不确定我的库实现是否能使这一行在测试中起作用:

List l = lib;

不确定 ArrayList 扩展。
附言我知道使用泛型类型更好,但我不能在本练习中使用它们。如果不使用它们,我会收到一些警告,请忽略它们。

最佳答案

您对 Library 类的实现确实是错误的 - 它不应该 Book 的列表,它应该 Book 的列表 - 这就是它扩展 ArrayList 的原因:

public class Library extends ArrayList<Book> {
// Note: no additional data members.
// The Library is already a List<Book>:

public Library(Book[] b) {
super(Arrays.asList(b));
}

public int pages() {
int p = 0;
for(int i = 0; i < size(); i++) {
p += get(i).getPages();
}
return p;
}
}

关于使用 Collections.sort 的 Java 特定练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com