使用Java8流计算列表中的对象数
因此,我尝试使用just Stream计算ArrayList中的对象数。 我正在使用stream.count,但这只是返回1,因为我的列表中有多个对象。下面是一些代码:使用Java8流计算列表中的对象数,java,java-8,java-stream,Java,Java 8,Java Stream,因此,我尝试使用just Stream计算ArrayList中的对象数。 我正在使用stream.count,但这只是返回1,因为我的列表中有多个对象。下面是一些代码: static ArrayList<Person> people = new ArrayList<>(); void loadCourses(){ // putting Person objects in the list } public void countPeople() { S
static ArrayList<Person> people = new ArrayList<>();
void loadCourses(){ // putting Person objects in the list }
public void countPeople()
{
Stream<ArrayList<Person>> stream1 = Stream.of(people);
long l = stream1.count();
System.out.println("Number of people loaded: " + l);
}
static ArrayList people=new ArrayList();
void loadCourses(){//将Person对象放入列表}
公众人物()
{
溪流1=溪流(人);
长l=stream1.count();
System.out.println(“加载的人数:+l”);
}
感谢您的帮助:)您使用的是
流
,而不是流
你想要:
long l = people.stream().count();
您得到的是1
,因为只有一个ArrayList
还要注意的是,您不需要流。你可以只做
people.size()
你使用的是流
而不是流
你想要:
long l = people.stream().count();
您得到的是1
,因为只有一个ArrayList
还要注意的是,您不需要流。你可以做
people.size()
作为@PaulBoddington的补充回答:我强烈建议你只使用people.size()
。在Java-8中,当您使用诸如people.stream().count()
之类的流来执行此操作时,它实际上会迭代整个集合。因此,该代码的有效工作方式如下:
long count = 0;
for(Person p : people) count++;
return count;
对于大型收藏来说,这可能非常缓慢。相反,people.size()
只返回存储在ArrayList
中的size字段的值
这个问题已经在Java-9代码中解决了(请参阅),但是这个解决方案并没有向后移植到Java-8。作为@PaulBoddington的补充回答:我强烈建议您只使用people.size()
。在Java-8中,当您使用诸如people.stream().count()
之类的流来执行此操作时,它实际上会迭代整个集合。因此,该代码的有效工作方式如下:
long count = 0;
for(Person p : people) count++;
return count;
对于大型收藏来说,这可能非常缓慢。相反,people.size()
只返回存储在ArrayList
中的size字段的值
这个问题已经在Java-9代码中解决了(请参阅),但是这个解决方案没有向后移植到Java-8。太棒了!成功了。是的,我可以用它,但我只是想熟悉溪流,所以是的。谢谢!杰出的成功了。是的,我可以用它,但我只是想熟悉溪流,所以是的。谢谢!