【发布时间】:2015-07-14 15:29:27
【问题描述】:
我有一个 ArrayList<Fileline> 和内部 Fileline 一个函数
public Double getValue() {
...
doing stuff
...
return value;
}
我要做的是返回一组 3 个文件行中任何非零 getValue() 的 count。
假设我有List<Fileline> filelines 和filelines.size() = 12,它们各自的getValue() 是0,0,0, 0,1,2, 0,3,0, 4,5,5,那么我想要的result 是3,除了第一组之外都是有效的。
如果它是一组 1 个文件行,我可以像这样 filter 和 count :
long resultCount = filelines.stream().filter(x -> x.getValue() > 0).count();
,但它是由 3 人一组的事实给我带来了问题。
是将列表拆分为多个 3 元素子列表的最佳方法还是更优雅的方法?
【问题讨论】:
-
你的问题没有意义。请记住,我们看不到您的代码库。请尽量说清楚。
Fileline是什么?这是从文件中读取的行吗?ElementId是什么?ArrayList包含什么?每个索引位置是否包含 1 行?逗号分隔符是怎么回事?等等.. -
@CKing 我会尝试改变我的问题,但它确实与我的对象无关。事实上,我可以删除
ElementID而不改变任何问题 -
您可以控制文件的格式吗?如果是这样,以不同的方式格式化文件会不会更容易?
-
@Benoit 只需发布构成问题的最基本信息。如果
ElementId不重要,那就去掉它。解释我们不知道的其余部分。我仍然很困惑。 假设我有 12 个 Fileline 和它们各自的 getValue。这是什么意思? 如果是我可以过滤和计数的每个文件行。这是什么意思? -
将任务拆分为三个简单的子任务: 1. 创建一个类 FileLineGroup,包含 3 个 FileLines,以及一个返回布尔值的方法 hasNonZeroValue(); 2. 将包含 12 个元素的 List
转换为包含 4 个元素的 List 。过滤并计算该列表。
标签: java arraylist collections filter java-stream