【问题标题】:Getting instance of class X from an ArrayList of class X without position从没有位置的 X 类的 ArrayList 中获取 X 类的实例
【发布时间】:2015-04-30 22:44:30
【问题描述】:

如果我在 Java 6 程序中有一个ArrayList,如下所示:

ArrayList<Keyword> = new ArrayList<Keyword>();

Keywordint keywordNoString textint frequency 和其他一些字段。

如果我知道keywordText 但不知道元素的位置或字段keywordNo 的值,如何从ArrayList 中检索元素?

我知道我可以使用循环并简单地阅读 ArrayList 比较 Strings 直到找到元素,但有没有更好的选择?

【问题讨论】:

  • 是否可以有多个Keyword 对象与给定的keywordText 匹配?
  • 不,它们应该是唯一的。
  • List 接口有一个 indexOf() 方法,该方法返回给定输入对象的索引,但它使用 equals() 方法,如果其他字段中的其他字段可能不适用于您的情况Keyword 未知。
  • 我宁愿避免为相关类编写自己的专用 equals 方法。

标签: java arraylist collections


【解决方案1】:

您必须使用循环遍历列表中的每个元素。对于每次迭代,您都需要获取当前元素并检查其值。

为了更快地访问,您应该使用Map<String, Keyword>,其中字符串是关键字文本。

您可以像这样将关键字放在地图中:

Map<String, Keyword> keywordsMap = new HashMap<String, Keyword>();
for (Keyword k : keywordList) {
    keywordsMap.put(k.text, k);
}

如果你想访问一个特定的关键字,你可以这样调用:

Keyword result = keywordsMap.get("somekeyword");

【讨论】:

  • 还有 q.v. this SO post 也得出了同样的结论。
  • 是的,这正是我认为我必须要做的。
  • 并且在循环中也有一个break 语句。
猜你喜欢
  • 2017-11-24
  • 2015-07-23
  • 2015-11-11
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多