通过set. toarray()查看集合的元素



是否有一种方法可以通过做set.toArray()[i](i是整数)这样的事情来查看集合的元素?

Set转换为数组

如果您的意思是问Set是否可以转换为数组,然后访问该数组,答案是"是"。

您所展示的代码将返回类型为Object而不是特定类型的对象。要获得特定的类型,请使用Javadoc中显示的语法。

String[] stringArray = mySetOfStrings.toArray( new String[0] ) ;
String s = stringArray[ index ] ;  // Where `index` is an `int` variable.

或者我们可以把它缩短为:

String s = mySetOfStrings.toArray( new String[0] )[ index ] ;

查看此代码运行在IdeOne.com。

注意:如果Set接口的具体实现没有保证一定的迭代顺序,那么这段代码就没有意义。如果不知道数组元素的顺序,就不能合理地请求数组的第n个元素

Set没有顺序

如果你想问是否有办法从Set中获得"第n"元素,比如第二个或第五个事件,答案是"不"。定义的Set没有顺序。因此,没有第二个或第五个元素的概念。

一些Set实现甚至可能没有一致的、可重复的迭代顺序。它们可以一次以一种顺序迭代,另一次以不同的顺序迭代。

<标题>

排序集Java确实提供了NavigableSet及其前身SortedSet,它们都扩展了Set接口。

这些接口的实现使元素保持有序。当你迭代这样的集合时,你会遇到按这个顺序排序的元素。

并且,EnumSet按照定义枚举对象的顺序迭代其元素。

请注意,在这个示例代码中,二月在集合q1中被添加到第三个,但被定义为enumjava.time.Month上的第二个对象。所以这个EnumSetJANUARY之后和MARCH之前迭代FEBRUARY对象。

Set< Month > q1 = EnumSet.of( Month.MARCH , Month.JANUARY , Month.FEBRUARY ) ;
Month m = q1.toArray( new Month[0] )[ 1 ] ;  // Feb.

查看代码运行在IdeOne.com。

相关内容

  • 没有找到相关文章

最新更新