我有一个数据结构,我需要将数据与同时发生的先前元素进行比较。
就像是:
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
。否则,您将使用处理
LinkedList
的Object
类的原始形式。可以将您从列表中得到的内容转换为DataStructure
,这将起作用。但是最好使用带有参数化类型的泛型。原始类型和类型转换是对集合进行操作的Java 5之前的旧方法。是否可以直接访问成员取决于创建和使用这些
DataStructure
的代码是否在同一程序包中,因为您对DataStructure
的成员具有(默认)程序包可见性。通常,您将希望使用
DataStructure
成员变量和private
访问这些值的“ getter”和“ setter”方法对public
类型进行封装。然后,任何代码都可以使用DataStructure
访问值。