有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java添加到泛型集合

我有一个泛型类,它应该创建一个数组中存储的可比较数据集合。我很不清楚可比和仿制药的工作方式

public class OrderedCollection<T extends Comparable<? super T>> 
{
private T collection[]; // the collection
private int size, tempValue; // how many elements currently stored

/**
 * Constructor allocates array and initializes size
 * @param size the number of elements stored
 */
    public OrderedCollection (int capacity) 
    {
    collection = (T[]) new Comparable[capacity];
    size = 0;       
    }
}

首先,什么样的集合是集合(数组、列表等)。它从来没有显式地实例化为newarray[],所以我很好奇这应该如何创建一个数组

其次,需要有一个方法插入一个指定的值(出于测试目的,我一直在使用'5')并将其分配给集合[0]。但是,当我返回集合[0]时,它返回为null。以下是插入方法:

public void insert(T x) 
{
    collection[0] = x;
}

没什么特别的。我非常希望能够澄清为什么集合返回null,以及如何将指定的x值添加到集合中


共 (2) 个答案

  1. # 1 楼答案

    通常的惯例是:

    private T[] collection;
    

    你的是C兼容语法

    public void add(T x) {
        if (size >= collection.length)
            throw new IllegalStateException();
        collection[size] = x;
        ++size;
    }
    

    集合是任何类型集合的接口。实现类有HashTree、ArrayList等

    这与其他一些语言不同,java并没有像JavaScript这样的几个“集合”类,而是有几个接口,它们有一个可供选择的实现。因此,对于一个映射,可以选择HashMap、TreeMap、LinkedHashMap等等。因此,在API中,您放置了接口,但实现使用了某些实现的技术优势

    例如,遍历树映射是按键排序的。LinkedHashMap的遍历按插入顺序排序

    关于null的信息一定是编程错误

  2. # 2 楼答案

    除了什么是集合的问题(请在API中查找),您发布的代码工作正常。用一些实现Compariable(如Integer或String)的内置类进行测试。。。您可以发布调用insert()方法的代码吗