Collection.sort不适用于我的数组

Azu*_*bow 3 java arrays sorting collections list

我创建了自己的MyArrayList,但无法对其进行排序.一个普通的Arraylist可以分类,Collections.sort但我的不能.有人可以告诉我哪里错了吗?

import java.util.*;

public class TestMyArrayList
{
    public static void main(String[] args){
        String[] subjects = {"EIE320", "EIE558", "EIE375", "EIE424"};
        Integer[] marks = {90,85,70,80};
        MyArrayList<String> sList = new MyArrayList<String>(subjects);
        Collections.sort(sList);
        sList.print();
        MyArrayList<Integer> mList = new MyArrayList<Integer>(marks);
        Collections.sort(mList);
        mList.print();
    }
}

public class MyArrayList<E> extends ArrayList<E>
    implements List<E>
{    
    private List<E> data;

    public MyArrayList()
    {
    }

    public MyArrayList(E[] inputdata){
        super();
        data = new ArrayList<E>();
        for(E e:inputdata){
            data.add(e);
        }
    }

    public void print(){
        for(Iterator iter = data.iterator();iter.hasNext();){
            System.out.print(iter.next() + " ");
        }

        System.out.println(" ");
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

构造函数MyArrayList是错误的.由于您正在扩展ArrayList,因此不应ArrayListMyArrayList构造函数中创建另一个实例.只需添加元素即可this ArrayList.

当你调用Collections.sort()你的MyArrayList情况下,它不排序data成员List.

public MyArrayList(E[] inputdata){
    super();
    for(E e:inputdata){
        super.add(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

data不需要您的会员.如果使用组合而不是继承,则只需要这样的成员,在这种情况下,您的类不会扩展ArrayList.

您还应该修改您的print方法:

public void print(){
    for(Iterator iter = iterator();iter.hasNext();){
        System.out.print(iter.next() + " ");

    System.out.println(" ");
}
Run Code Online (Sandbox Code Playgroud)