我有一个包含数千个数据的数组列表。

例如:

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);

10-06 02:51