Java 从没有位置的类X的ArrayList获取类X的实例

Java 从没有位置的类X的ArrayList获取类X的实例,java,arraylist,collections,Java,Arraylist,Collections,如果我在Java 6程序中有一个ArrayList,如下所示: ArrayList=newarraylist() 其中,关键字具有int关键字no、字符串文本、int频率和一些其他字段 如果我知道关键字text但不知道元素的位置或字段关键字no的值,如何从数组列表中检索元素 我知道我可以使用循环,只需通过比较Strings来读取ArrayList,直到找到元素,但是否有更好的替代方法?您必须使用循环迭代列表中的每个元素。对于每个迭代,您需要获取当前元素并检查其值 为了更快地访问,您应该使用映射,

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

ArrayList=newarraylist()

其中,
关键字
具有
int关键字no
字符串文本
int频率
和一些其他字段

如果我知道
关键字text
但不知道元素的位置或字段
关键字no
的值,如何从
数组列表中检索元素


我知道我可以使用循环,只需通过比较
Strings
来读取
ArrayList
,直到找到元素,但是否有更好的替代方法?

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

为了更快地访问,您应该使用
映射
,其中字符串是关键字文本

您可以在地图中放置关键字,如下所示:

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

是否可能有多个
关键字
对象与给定的
关键字文本
匹配?不,它们应该是唯一的。
列表
接口有一个
索引()方法
返回给定输入对象的索引,但它使用
等于()
方法,如果
关键字中的其他字段未知,则该方法可能不适用于您的案例。我宁愿避免为所讨论的类编写自己专用的
equals
方法。q.v.也得出了相同的结论。是的,这正是我想我必须要做的。在循环中还有一个
break
语句。