我使用java 8流和并行流编写代码以获得与自定义收集器相同的功能来执行聚合功能.当我看到CPU使用率时htop,它显示了用于"流"和"并行流"版本的所有CPU核心.因此,似乎在使用list.stream()时,它也使用所有CPU.这里,就多核的使用而言,parallelStream()和stream()之间的确切区别是什么.
bool operator<(const Binding& b1, const Binding& b2)
{
if(b1.r != b2.r && b1.t1 != b2.t1)
{
if(b1.r != b2.r)
return b1.r < b2.r;
return b1.t1 < b2.t1;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我有一个像上面这样的比较函数.基本上,如果其中一个属性匹配,我需要认为对象是相等的.我正在为我的multimap使用这个比较函数,其关键是'Binding'对象.我面临的问题是lower_bound和upper_bound函数返回指向有效对象的相同迭代器.例如(t1 = 1,r = 2)已经在地图中,当我尝试在地图中用(t1 = 1,r = 2)搜索它时,我获得与upper_bound和lower_bound函数的返回值相同的迭代器.
比较功能有什么问题吗?有没有办法计算一个函数,即使只有一个字段匹配,我仍然可以确保对象是等价的?upper_bound迭代器不应该返回通过的对象