Java:遍历列表的列表?
问题但是在C#中。那么Java有C#的命令吗?我需要它来匹配-SearchTerm-文件关系。
foreach(var i in BunchOfItems.SelectMany(k => k.Items)) {}
[为什么不使用 for 循环?] 我已经在嵌套的 for 循环中完成了这样的结构,但它们很快就变得臃肿。所以我更喜欢像上面这样更简洁的东西。
public static Stack<Integer[]> getPrintPoss(String s,File f,Integer maxViewPerF)
{
Stack<File> possPrint = new Stack<File>();
Integer[] poss = new Integer[4]();
int u,size;
for(File f:files)
{
size = f2S(f).length();
u = Math.min(maxViewsPerF,size);
for(int i=0; i<u;i++)
{
// Do something --- bloated, and soon out of control
// wants more succintly
}
}
return possPrint;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为没有更简单的解决方案。
I don't think there's a simpler solution.
如果您可以将数据放入
Iterable>
中,那么您可以使用 Guava 的Iterables 将其转换为扁平化的
方法。如果您拥有的确实是一个Iterable
.concatIterable
,并且可以通过某种方式从S
转换为Iterable
,那么,那么你必须首先使用Iterables.transform
将其视为concat
所需的Iterable>
。如果 Java 有类似闭包的东西,所有这一切看起来都会好得多,但至少在今天这是可能的。
http://guava-libraries.googlecode.com
If you can get the data into an
Iterable<Iterable<T>>
, then you can get from that to a flattenedIterable<T>
using Guava'sIterables.concat
method. If what you have is really anIterable<S>
, with some way to get from anS
to anIterable<T>
, well, then you have to first useIterables.transform
to view that as theIterable<Iterable<T>>
needed byconcat
.All this will look a lot nicer if and when Java has something resembling closures, but at least today it's possible.
http://guava-libraries.googlecode.com
对于 Java 8,您可以说
或 ,
具体取决于您是否拥有
Collection
还是Array
。With Java 8, you can say
or
depending upon whether you have a
Collection
or anArray
.请耐心等待大约半年的时间,直到 JDK7 最终版本,其中将包含闭包。这提供了与 LINQ 类似的语法和相同的可能性,这在您所讨论的答案中得到了演示。
Have about half a year patience until JDK7 is final which will include Closures. This provides simliar syntax and the same possibilities as LINQ which was demonstrated in the answer you're talking about.
我有自己的版本。绝望地等待 Java 中的闭包:
用法:
I have my own version. Waiting desperately for Closures in Java :
Usage:
SelectMany 方法是 .Net 特定的 LINQ 的一部分。 这个问题询问java的LINQ等效项。不幸的是,看起来并没有直接的等价物。
The SelectMany method is part of LINQ which is .Net-specific. This question asks about a LINQ equilvalent for java. Unfortunately, it doesn't look like there is a direct equivalent.