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