使用Collections.sort的Java特定练习

使用Collections.sort的Java特定练习,java,sorting,collections,Java,Sorting,Collections,我有这个Test类,为了通过断言,我必须编写其他类的代码。 这是测试类: import java.util.*; 公开课考试 { 公共静态void main(字符串[]args) { BookJavaBook=新书(“学习Java”,150); 图书cbook=新书(“C”,120); Book[]books=新书[]{javabook,cbook}; 图书馆图书馆=新图书馆(图书); 断言(lib.pages()==270); 列表l=lib; 断言(l.size()=2); 集合。排序(l)

我有这个
Test
类,为了通过断言,我必须编写其他类的代码。 这是
测试
类:

import java.util.*;
公开课考试
{
公共静态void main(字符串[]args)
{
BookJavaBook=新书(“学习Java”,150);
图书cbook=新书(“C”,120);
Book[]books=新书[]{javabook,cbook};
图书馆图书馆=新图书馆(图书);
断言(lib.pages()==270);
列表l=lib;
断言(l.size()=2);
集合。排序(l);
断言(l.get(0)=cbook);
断言(l.get(1)=javabook);
}
}
我开始制作Book类,以下是我的实现:

public类书实现了可比较的
{
私有字符串名称;
私人网页;
公共图书(字符串名称,整版)
{
this.name=名称;
this.pages=页面;
}
公共int getPages()
{
返回此网页;
}
公共整数比较(对象对象对象)
{
如果(this==obj)返回0;
其他的
{
图书x=(图书)obj;
返回此.pages-x.pages;
}
}
}
然后我编写了Library类:

import java.util.*;
公共类库扩展了ArrayList
{
ArrayList a;
公共图书馆(书籍[]b)
{
a=新阵列列表(b.长度);

对于(int i=0;i您对
类的实现确实是错误的-它不应该
书籍
的列表,它应该
书籍
的列表-这就是它扩展
数组列表
的原因:

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;
    }
}
公共类库扩展了ArrayList{
//注意:没有其他数据成员。
//该库已经是一个列表:
公共图书馆(书籍[]b){
super(Arrays.asList(b));
}
公共int页(){
int p=0;
对于(int i=0;i
集合。sort
使用一些迭代器之类的方法,您的
类不会委托给
a
。可能会让您感到困惑的是,每个库都涉及两个arraylist状态——一个来自扩展
arraylist
,另一个来自
a
。所以问题是我的类没有没有实现迭代器方法?谢谢!这个解决方案对我很有帮助,没想到它这么简单,但我不知道
数组.asList
方法,所以我想我自己无法得到这种解决方案。再次感谢。