set交集差集處理
阿新 • • 發佈:2018-11-03
package utils.bianliangtestutils; import com.alibaba.fastjson.JSONObject; import pojo.RiskParamPOJO; import java.sql.SQLException; import java.util.*; /** * by zfy * 2018/9/22 */ public class SetUtil<T> { /** * 判斷A是否被B完全包含,如果包含則返回true,否則返回false,並且列印沒有被包含的變數 * @param A 待驗證的變數集 例如京東信用分的變數集 * @param B 所有變數的set, 例如分開節點3150呼叫策略引擎的引數key集 * @return boolean */ public boolean BContainsA(HashSet<T> A, HashSet<T> B){ //A 和 B 的交集 HashSet<T> jiaoji = new HashSet<>(); jiaoji.addAll(A); jiaoji.retainAll(B); //A B 的交集size 等於 A的size 說明 B完成包含A boolean result = false; if (jiaoji.size() == A.size()){ result = true; }else { System.out.println("====以下差異結果====="); System.out.println("第一個Set==" + A.toString()); System.out.println("第二個Set==" + B.toString()); System.out.println("第一個set不在第二個set中的部分:" + chajiSet(A,B)); System.out.println("第二個set不在第一個set中的部分:" + chajiSet((HashSet<T>) B,A)); } return result; } /** * * @param A * @param B * @return 返回A-B的結果集 即 A不在B中的部分 */ public HashSet<T> chajiSet(HashSet<T> A, HashSet<T> B){ //A與B的差集 HashSet<T> chaji = new HashSet<>(); chaji.addAll(A); chaji.removeAll(B); return chaji; } /** * * @param A * @param B * @return 返回A與B的交集集 即 A在B中的部分 */ public HashSet<T> jiaojiSet(HashSet<T> A, HashSet<T> B){ //A與B的差集 HashSet<T> chaji = new HashSet<>(); chaji.addAll(A); chaji.retainAll(B); return chaji; } public HashSet<String> keyStartWith(HashSet<String> paraSet, String startStr){ HashSet<String> result = new HashSet<>(); Iterator<String> iterator = paraSet.iterator(); while (iterator.hasNext()){ String next = iterator.next(); if (next.startsWith("zr")){ result.add(next); } } return result; } }