链接列表中的参数化类型

时间:2014-10-14 23:08:58

标签: java generics linked-list

我有一个数据结构,我需要将数据与同时发生的先前元素进行比较。 类似的东西:

dataStruct{
long startTime;
long endTime;
long data;
}

我的实现的一部分涉及将这些元素添加到链表并比较重叠时存在的节点之间的数据。我是否需要参数化类型,或者我可以将dataStructures添加到列表中并通过点运算符访问其成员。类似的东西:

    dataStructure data = new DataStructure(time, time2, data);
    dataStructure moreData = new DataStructure(time3, time4, data2);

    LinkedList list = new LinkedList();

    list.add(data);

    if(list.peek().endTime > moreData.startTime){
    moreData.data = list.peek().data + moreData.data;
    list.pop();
    }

1 个答案:

答案 0 :(得分:2)

您应该使用参数化类型。

LinkedList<DataStructure> data = new LinkedList<DataStructure>();

这样,您就可以从DataStructure中获得Object而不是LinkedList

否则,您正在使用处理LinkedList的{​​{1}}类的原始格式。可以将您从列表中获得的内容转换为Object,这样就可以了。但是使用具有参数化类型的泛型是首选;原始类型和转换是旧的,Java之前的5种集合操作方式。

是否可以直接访问成员取决于创建和使用这些DataStructure的代码是否在同一个包中,因为您对DataStructure成员具有(默认)包可见性。

通常,您需要使用DataStructure类型进行封装,使用DataStructure成员变量和private“getter”和“setter”方法来访问这些值。然后,任何代码都可以使用public访问这些值。