繁体   English   中英

使用Java 8流和谓词的这段代码的时间复杂度

[英]Time complexity of this code using Java 8 stream and predicate

我有一张地图,试图从中使用Java 8流检索数据,并使用谓词进行过滤。

但是我对代码的复杂性有很大的怀疑。 谁能帮我弄清楚这段代码的时间复杂度。

class Student{
   String id;
}
Multimap<Integer, String> map = HashMultimap.create();
    map.put(1, new Student("id1"));
    map.put(2, new Student("id1"));
    map.put(1, new Student("id2"));
    map.put(1, new Student("id3"));

// Time complexity of this ???
map.get(1).stream().filter(p -> p.getId().equals("id1"))
                    .collect(Collectors.toSet());

您的代码的简单答案是O(1),因为您没有指定终端操作,并且流是惰性计算的。 因此,目前您的流代码根本不进行任何流处理。

map.get(1)操作返回一个已经计算出的Set。 因此,复杂度是找到该条目的一种方法:O(1),就像评论员之一已经说过的那样。

编辑后,它应为O(n)。

但是正如Brian所说的那样,请考虑正确的代码而不是复杂性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM