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)
构造函数MyArrayList是错误的.由于您正在扩展ArrayList,因此不应ArrayList在MyArrayList构造函数中创建另一个实例.只需添加元素即可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)