2015-04-30 30 views
3

位置。如果我有一个Java 6的程序的ArrayList如下:获得类X的实例从类X的ArrayList没有

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

Keywordint keywordNoString textint frequency和其他几个领域。

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

我知道我可以使用循环,只需通过ArrayList比较Strings,直到找到元素,但有没有更好的选择?

+0

有没有可能来有多个匹配给定'keywordText'的'Keyword'对象? –

+0

不,它们应该是唯一的。 –

+0

'List'接口有一个'indexOf()'方法,它返回给定输入对象的索引,但它使用'equals()'方法,如果'Keyword'中的其他字段可能不适用于您的情况未知。 –

回答

2

您将不得不循环遍历列表中的每个元素。对于每次迭代,您需要获取当前元素并检查其值。

为了加快访问速度,您应该使用Map<String, Keyword>,其中String是keywordText。

你可以把你的关键字在地图这样的:

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

然后,如果你想访问一个特定的关键字,你可以做这样一个电话:

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

而q.v. [这个SO帖子](http://stackoverflow.com/questions/739192/java-method-finding-object-in-array-list-given-a-known-attribute-value)也得出了同样的结论。 –

+1

是的,这正是我想我必须要做的。 –

+0

并在循环中也有一个'break'语句。 –