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

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();
    }

最佳答案

您应该使用参数化类型。

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


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

否则,您将使用处理LinkedListObject类的原始形式。可以将您从列表中得到的内容转换为DataStructure,这将起作用。但是最好使用带有参数化类型的泛型。原始类型和类型转换是对集合进行操作的Java 5之前的旧方法。

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

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

09-27 09:56