集和ArrayLists

时间:2014-07-10 15:15:50

标签: java arraylist set

如果我有一个对象类型的ArrayList,我想得到一个特定对象的名称,我会用

arraylist.get(i).getName();

但它不适用于套装?如何使用Sets?

调用特定属性

我尝试这样做也是因为我处理了大量数据。效率更高

是套装吗?

4 个答案:

答案 0 :(得分:2)

如果你需要抓取特定的元素,那么数组/ arraylist是一个更好的实现。虽然如果你真的需要你设置,你可以通过for循环来设置,例如:

for(MyObject elem : mySet){
  elem.getName();//Do something with each name
}

抓住每个名字。

答案 1 :(得分:1)

如果

,则表示列表(ArrayList)
  • 列表元素的顺序很重要
  • 如果要插入多个相等元素的实例
  • 您可以(合理地)使用索引值0,1,2,...
  • 访问元素
  • 快速迭代所有值非常重要

如果

,则优选Set(HashSet)
  • 每个相等元素的实例只应表示一次
  • 您不关心广告订单
  • 您不需要通过索引(或其他一些属性)检索

要访问Set中元素的属性,您可以(或必须)迭代Set元素(无特定顺序)并调用getter:

Set<Element> setOfEl = ...;

for( Element el: setOfEl ){
    if( el.getName().equals( ... ){
        //....
    }

。 }

答案 2 :(得分:0)

问题不在于getName(),而在于获取您调用getName()的对象。对于ArrayList,您可以调用get(i)来获取第i个元素。在集合的情况下,没有定义这样的顺序。

你有两个选择。您可以将其定义为Map,然后调用get(<yourkey>)然后调用getName(),或者遍历该集合,直到找到您要查找的内容.iterator()

答案 3 :(得分:0)

正如名称所示,

ArrayList<E>List<E>,因此方法get(i)会为您提供E类型的对象。 Set<E>没有这样的方法,因此getName()将无效。

Set<E>未订购。您必须使用Iterator来解析Set并遍历其所有元素。

您可以参考documentation here