将一个树集值包含在另一个树集中

时间:2018-03-18 10:59:54

标签: java collections

实际上,如果set1包含set2的某些值(b和d),我想返回true。如果任何一个集合中存在任何一个值,那么它应该返回true

class TreeSetExample{

       public static void main(String[] args){
            TreeSet set1 = new TreeSet();
            TreeSet set2 = new TreeSet();

            set1.add("a");
            set1.add("b");
            set1.add("d");
            set1.add("e");

            set2.add("c");
            set2.add("b");
            set2.add("d");
            set2.add("g");

           boolean b1 = set1.contains(set2);// here i am getting classCastException
       }
    }

我知道包含只接受对象而不是集合。那么有没有办法检查两个树集之间的值。

2 个答案:

答案 0 :(得分:1)

您有Collection(从Set接口派生)但只有当参数中的集合的所有元素都包含在当前TreeSet对象中时,它才会返回true。

要检查是否包含任何元素,您可以使用流方法 当然,您也应该使用泛型类型,而不是实际用于TreeSet<String> set1 = new TreeSet<>(); TreeSet<String> set2 = new TreeSet<>(); ... boolean isAnyMatch = set2.stream() .anyMatch(s2 -> set1.contains(s2)); System.out.println(isAnyMatch); 的原始类型,并且强烈建议不要使用。

cv::Scalar   min(220/2, 190, 80);
cv::Scalar   max(260/2, 255, 255);
cv::Mat threshold_frame;
cv::inRange( tempMatHSV, min, max, threshold_frame);

cv::Mat str_el = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
morphologyEx(threshold_frame, threshold_frame, cv::MORPH_OPEN, str_el);
morphologyEx(threshold_frame, threshold_frame, cv::MORPH_CLOSE, str_el);

答案 1 :(得分:0)

首先,我建议您首先不使用原始类型并使用泛型:

if(!Collections.disjoint(set1,set2)){
   // do logic
}

现在,您可以检查这两个集合是否有一些共同的元素:

{{1}}