我想这个问题在这里已经被问到了。我搜索了一下,但找不到类似的东西。所以这里开始--
我有一个自定义的数据对象Method
和Method
如下——
public Class Method {
List<String> inputParameters;
String resultVariableName;
}
现在我有了一个LinkedList<Method>
,它充当了Method
对象的存储库。
给定一个Method
对象,有一种方法可以具体确定Method
对象的正确索引
我的问题来自于LinkedList
类有一个indexOf
例程,但该例程返回对象的第一个出现,但没有给定Method
对象的两个副本不能驻留在LinkedList
中(对吗?)
当我将每个Method
对象添加到LinkedList
时,标记它会解决我的目的吗?如果是,有理想的方法吗?
编辑:
进一步解释我的用例
我的代码基本上是自上而下读取Velocity模板并创建Method
对象。为遇到的每个速度例程创建一个Method
对象。这解释了为什么同一元素可以存储在LinkedList
中的多个索引处,因为对调用Velocity
例程的次数或提供给Velocity
例程的输入/结果没有实际限制。
现在,我有一个UI组件,LinkedList<Method>
中每个Method
对象引用一个JButton
,用户可以使用它来单击和编辑Method
对象。
因此,如果相同的元素在LinkedList<Method>
中驻留两次或多次,我需要知道要编辑哪个确切的Method
对象引用
您首先所说的"正确"索引是什么意思?如果链接列表可以包含同一个元素两次或两次以上(这里要小心-列表只包含对Method
对象的引用,而不是对象本身),那么在您的视图中,哪个索引是"正确的"?
当然,您可以自己迭代链表,并返回给定Method
引用所在的所有索引,但不清楚您要用它做什么。
请注意,索引并不经常与链表一起使用,因为在给定索引的处获取元素是一个O(n)运算。
LinkedList中允许重复。
LinkedList不避免重复,它可能有多个副本。
您可以放置一个逻辑来避免多个实例,扩展linkedlist类并重写add函数来检查Method对象是否已经存在。
或
如果要获取Method对象的所有实例,可以使用ListIterator收集它的所有实例并返回此集合。
"没有给定2个Method对象的副本不能驻留在LinkedList中",如果这是一个场景,您将如何确定要检索哪个对象??
在这种情况下,我建议您使用LinkedHashMap,在这里您可以使用Identifier作为密钥来唯一标识Method's
对象。