java set和list可以根据位置取数吗?类似vector的ElementAt()一样?
2个回答
展开全部
Set没有提供对应的方法,因为Set更关注于唯一的元素,而不是平等的元素。如果Set以后不会再变化,你可以使用toArray(T[] a)方法变成数组后使用位置访问,但其顺序并不是元素的插入顺序。
List虽然提供了对应的方法get(int i)支持对元素进行位置访问,但是其本身更关注于对全体元素的处理和遍历,类似LinkedList这种实现如果使用get(int i)方法访问效率会非常低,因为每次都需要从第一个元素开始。同样,你可以使用toArray(T[] a)方法变成数组,或者干脆就是使用ArrayList进行声明(变量和对象)。
vector本身也是数组实现,根据位置取数效率很高,但其本身是线程安全集合,如果程序不需要线程安全,效率也是浪费的。
所以,如果你要实现根据位置取数,如果能够使用数组就尽量使用数组,如果不行(元素会一直变化),则使用ArrayList。
List虽然提供了对应的方法get(int i)支持对元素进行位置访问,但是其本身更关注于对全体元素的处理和遍历,类似LinkedList这种实现如果使用get(int i)方法访问效率会非常低,因为每次都需要从第一个元素开始。同样,你可以使用toArray(T[] a)方法变成数组,或者干脆就是使用ArrayList进行声明(变量和对象)。
vector本身也是数组实现,根据位置取数效率很高,但其本身是线程安全集合,如果程序不需要线程安全,效率也是浪费的。
所以,如果你要实现根据位置取数,如果能够使用数组就尽量使用数组,如果不行(元素会一直变化),则使用ArrayList。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的呀,你可以根据他的索引去取值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询