java list 交集 并集 差集 去重复并集

来源:互联网 发布:json.dump 格式化输出 编辑:程序博客网 时间:2024/06/05 16:36

集合

package com;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Test { public static void main(String[] args) {  List list1 =new ArrayList();  list1.add("1111");  list1.add("2222");  list1.add("3333");  List list2 =new ArrayList();  list2.add("3333");  list2.add("4444");  list2.add("5555");  //并集  //list1.addAll(list2);  //交集  //list1.retainAll(list2);  //差集  //list1.removeAll(list2);  //无重复并集    list2.removeAll(list1);    list1.addAll(list2);  Iterator<String> it=list1.iterator();  while (it.hasNext()) {   System.out.println(it.next());  }  //System.out.println("-----------------------------------\n");  //printStr(list1); } public static void printStr(List list1){  for (int i = 0; i < list1.size(); i++) {   System.out.println(list1.get(i));  } }}

数组

package com.wish.datastrustudy; import java.util.HashSet;   import java.util.LinkedList;   import java.util.List;import java.util.Set;   public class StringArray {       public static void main(String[] args) {           //测试union           String[] arr1 = {"abc", "df", "abc","dd","bdfe"};           String[] arr2 = {"abc", "cc", "df", "d", "abc"};           String[] result_union = union(arr1, arr2);           System.out.println("求并集的结果如下:");           for (String str : result_union) {               System.out.println(str);           }           //测试insect           String[] result_insect = intersect(arr1, arr2);           System.out.println("求交集的结果如下:");           for (String str : result_insect) {               System.out.println(str);           }            //测试 substract        String[] result_minus = substract(arr1, arr2);           System.out.println("求差集的结果如下:");           for (String str : result_minus) {               System.out.println(str);           }       }       //并集(set唯一性)    public static String[] union (String[] arr1, String[] arr2){        Set<String> hs = new HashSet<String>();        for(String str:arr1){            hs.add(str);        }        for(String str:arr2){            hs.add(str);        }        String[] result={};        return hs.toArray(result);    }    //交集(注意结果集中若使用LinkedList添加,则需要判断是否包含该元素,否则其中会包含重复的元素)    public static String[] intersect(String[] arr1, String[] arr2){        List<String> l = new LinkedList<String>();        Set<String> common = new HashSet<String>();                          for(String str:arr1){            if(!l.contains(str)){                l.add(str);            }        }        for(String str:arr2){            if(l.contains(str)){                common.add(str);            }        }        String[] result={};        return common.toArray(result);    }    //求两个数组的差集       public static String[] substract(String[] arr1, String[] arr2) {           LinkedList<String> list = new LinkedList<String>();           for (String str : arr1) {               if(!list.contains(str)) {                   list.add(str);               }           }           for (String str : arr2) {               if (list.contains(str)) {                   list.remove(str);               }         }           String[] result = {};           return list.toArray(result);       }   }  
阅读全文
0 0
原创粉丝点击