Java LinkedList——检索对象的索引




我想这个问题在这里已经被问到了。我搜索了一下,但找不到类似的东西。所以这里开始--
我有一个自定义的数据对象MethodMethod如下——

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对象。

相关内容

  • 没有找到相关文章

最新更新