我有一个包含数千个数据的数组列表。
例如:
List<String> custNames = new ArrayList<String>();
custNames.add("John");
custNames.add("Tom");
custNames.add("Bart");
custNames.add("Tim");
custNames.add("Broad");
现在,我只想获取以“T”开头的名称的数量。我为解决方案使用了循环机制。
List<String> filterNames = new ArrayList<String>();
String nameStarts="T";
for(int i=0;i<custNames.size();i++)
{
if(custNames.get(i).toLowerCase().startsWith(nameStarts.toLowerCase()))
{
filterNames.add(custNames.get(i));
}
}
System.out.println(filterNames.size());
但是在这个custNames列表中,我有非常大量的数据收集。
有没有不使用循环的其他解决方案?
谢谢。
最佳答案
Java 8为您的问题提供了很好的解决方案。
试试这个,
long filterNameCount = custNames
.stream()
.parallel()
.filter((s) -> s.startsWith(nameStarts.toLowerCase()))
.count();
System.out.println(filterNameCount);