Groovy - 将字符串拆分为FIFO队列

时间:2011-04-05 13:18:15

标签: groovy

我还在快速了解常规提供的快捷方式。

是否有一种更短的“更加通常”的方式来将字符串拆分为FIFO队列?

这是我目前所拥有的:

String source
Queue<Character> chars = new LinkedList<Character>(Arrays.asList(source.value))

2 个答案:

答案 0 :(得分:1)

这不起作用吗?

Queue<Character> chars = source.value as Queue<Character>

(假设source.valueString

实际上,我刚试过这个:

source = [ value:'hello' ]
Queue<Character> queue = source.value as Queue<Character>
println queue.class.name

打印出来

String_delegateProxy

我期望的java.util.Queue

我能提出的最好的工作例子是:

Queue<Character> queue = new LinkedList<Character>( source.value as List )

由于LinkedList实现了Queue接口

答案 1 :(得分:1)

这就足够了(String - &gt; char [] - &gt; LinkedList)

Queue<Character> chars = '1234'.chars as LinkedList
assert '1' == chars.remove()
assert '2' == chars.remove()
assert '3' == chars.remove()
assert '4' == chars.remove()

关于之前的评论的一件事。

将任何内容转换为接口会在较新版本的groovy(1.7+或许不确定)中创建代理。至少除了常用的'as List'或'as Set'转换之外的任何内容。

此代理使用InvokerHelper.invokeMethod(delegate, 'remove', args)等调用将接口方法委托给转换对象。见DGM#asType(Object, Class<T>)groovy.util.ProxyGenerator

String_delegateProxy tim got是通过将String转换为Queue而创建的代理之一。