Java 如何随机访问StringTokenizer中的第n个元素

Java 如何随机访问StringTokenizer中的第n个元素,java,string,stringtokenizer,string-split,Java,String,Stringtokenizer,String Split,无论如何,我们都可以直接访问stringTokenizer中的某个(比如说第20个)元素。偶尔我只需要其中的某个元素,不需要其他元素,但我必须遍历所有元素 编辑:我还想忽略空元素 我遗漏了什么吗?你可以用它来代替标记器 例如: String[] split = "you string is splitting".split(" "); split[2]; // random access to the 3rd element of split 当然,在访问子索引之前,您需要检查您的s

无论如何,我们都可以直接访问stringTokenizer中的某个(比如说第20个)元素。偶尔我只需要其中的某个元素,不需要其他元素,但我必须遍历所有元素

编辑:我还想忽略空元素

我遗漏了什么吗?

你可以用它来代替
标记器

例如:

String[] split = "you string is splitting".split(" ");
split[2];  // random access to the 3rd element of split    

当然,在访问子索引之前,您需要检查您的
split
是否确实有那么多的元素。

标记器用于按顺序访问元素(有点像
LinkedList
)。您必须遍历所有令牌并将它们存储在某种随机访问集合中(
ArrayList
),或者使用另一种方法拆分原始字符串/流。

您可以尝试Apache Commons Lang的类,该类可以拆分字符串,同时忽略空元素并为您处理
null
字符串

为了确定哪一个是第n个标记,标记器必须读取至少n个标记。因此,使用
string#split()
StringUtils.split(…)
创建字符串数组可能更容易


请注意,我更喜欢
StringUtils.split(…)
,因为如果我不需要空元素,它不会返回空元素,即
StringUtils.split(“,a,b,c;;d,e,,,,”;”)
将返回
[“a”、“b”、“c”、“d”、“e”、“f”]
,而
String#split()
将返回
[”、“a”、“b”、“c”、“d”、“e”、“e”、“f”]
是否可以在多个不同的分隔符处拆分?是否可以忽略空元素?是的,可以在任何正则表达式处拆分。这将给您很大的灵活性。@SyedAqeel基本上是的,您可以,例如,在
上拆分意思是
“a,b;c”
将导致
[“a”,“b”,“c”]
[-链接到拆分