gpt4 book ai didi

java - Collection.sort 不适用于我的数组

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:11 24 4
gpt4 key购买 nike

我创建了自己的 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(" ");
}
}

最佳答案

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

当您在 MyArrayList 实例上调用 Collections.sort() 时,它不会对 data 成员 List< 进行排序.

public MyArrayList(E[] inputdata){
super();
for(E e:inputdata){
super.add(e);
}
}

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

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

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

System.out.println(" ");
}

关于java - Collection.sort 不适用于我的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35981927/

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