是否可以使用Stream API执行类似的操作?
class A{
public:
virtual ~A() = default;
virtual void test(){ std::cout << "Ayyyyy" << std::endl;}
};
class B : public A {
public:
virtual void test() override {std::cout << "Beeeeeee" << std::endl;}
};
int main(){
std::shared_ptr<A> p(new B[10], [](A* a){ delete [] a;});
(p.get() + 2)->test();
}
我希望从三角形的三个边缘获得A点和B点并用.distinct消除重复
答案 0 :(得分:2)
您可以使用Point
生成所有边缘的所有flatMap
的流,并使用distinct()
删除重复项:
LinkedList<Point> l =
EDGES.stream()
.flatMap(e->Stream.of(e.p1,e.p2))
.distinct()
.collect(Collectors.toCollection(LinkedList::new);
答案 1 :(得分:0)
像
这样的东西List<Point> l = EDGES.stream().flatMap(e -> Stream.of(e.p1, e.p2)).distinct().collect(Collectors.toList());
或使用Set
Set<Point> l = EDGES.stream().flatMap(e -> Stream.of(e.p1, e.p2)).collect(Collectors.toSet());