[英]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.