求String的交集、并集、差集

转载 2013年12月03日 21:17:27
package Bean;

import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class StringArray {
	public static void main(String[] args) {
		// 测试union
		String[] arr1 = { "abc", "df", "abc" };
		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);
		}
		System.out
				.println("---------------------可爱的分割线------------------------");

		// 测试insect
		String[] result_insect = intersect(arr1, arr2);
		System.out.println("求交集的结果如下:");
		for (String str : result_insect) {
			System.out.println(str);
		}

		System.out
				.println("---------------------疯狂的分割线------------------------");
		// 测试minus
		String[] result_minus = minus(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> set = new HashSet<String>();
		for (String str : arr1) {
			set.add(str);
		}
		for (String str : arr2) {
			set.add(str);
		}
		String[] result = {};
		return set.toArray(result);
	}

	// 求两个数组的交集
	public static String[] intersect(String[] arr1, String[] arr2) {
		Map<String, Boolean> map = new HashMap<String, Boolean>();
		LinkedList<String> list = new LinkedList<String>();
		for (String str : arr1) {
			if (!map.containsKey(str)) {
				map.put(str, Boolean.FALSE);
			}
		}
		for (String str : arr2) {
			if (map.containsKey(str)) {
				map.put(str, Boolean.TRUE);
			}
		}

		for (Entry<String, Boolean> e : map.entrySet()) {
			if (e.getValue().equals(Boolean.TRUE)) {
				list.add(e.getKey());
			}
		}

		String[] result = {};
		return list.toArray(result);
	}

	// 求两个数组的差集
	public static String[] minus(String[] arr1, String[] arr2) {
		LinkedList<String> list = new LinkedList<String>();
		LinkedList<String> history = new LinkedList<String>();
		String[] longerArr = arr1;
		String[] shorterArr = arr2;
		// 找出较长的数组来减较短的数组
		if (arr1.length > arr2.length) {
			longerArr = arr2;
			shorterArr = arr1;
		}
		for (String str : longerArr) {
			if (!list.contains(str)) {
				list.add(str);
			}
		}
		for (String str : shorterArr) {
			if (list.contains(str)) {
				history.add(str);
				list.remove(str);
			} else {
				if (!history.contains(str)) {
					list.add(str);
				}
			}
		}

		String[] result = {};
		return list.toArray(result);
	}
}




mysql中交集,并集,差集,左连接,右连接

学习mysql也有一个月啦,在这个月中,都是按照需求对数据表进行一些基本操作,在这个过程当中,经常使用到左连接,右连接,交集,取差集等,现在对其基本操作进行归纳总结。 数据源: 表一:        ...
  • Mikefei007
  • Mikefei007
  • 2016年12月26日 18:37
  • 8842

求两个集合的交集、差集和并集

#include #include typedef struct node{ char data; struct node * next; }Linklist;//尾插入法 Link...
  • caoyahong114
  • caoyahong114
  • 2016年05月25日 16:05
  • 567

Oracle 多个查询结果的交集、差集和并集

union/union all运算:将查询的返回组合成一个结果, union all不过滤重复。 SELECT product_id FROM order_items UNION SEL...
  • linminqin
  • linminqin
  • 2012年02月22日 10:31
  • 28487

STL 算法vector/set集合-交集,并集,差集,对称差

针对这里提及的四个集合运算必须特别注意:  1、第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认“ 2、第二个算法需保证第一集合和第二集合有序,排序方式参照Compare确定,内部...
  • kalilili
  • kalilili
  • 2014年12月26日 21:13
  • 5965

java集合的交集,并集,差集

原文地址 http://blog.csdn.net/qq_25806863/article/details/70312046今天要用到差集,突然懵逼了,然后脑子一抽写出了下面的代码 Se...
  • qq_25806863
  • qq_25806863
  • 2017年04月21日 10:45
  • 4862

python 集合比较(交集、并集,差集)

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和...
  • isoleo
  • isoleo
  • 2013年10月24日 16:46
  • 31604

集合类(并集、交集、差集操作)

昨日,朋友拿来一份有些问题的源代码,是一个集合类和几个集合操作函数(并集、交集、差集),帮忙改了一下,刚转C++不到半个月,因为只是为了算法竞赛而学C++,所以只好好学了C++偏向算法层的知识,类只是...
  • f_zyj
  • f_zyj
  • 2016年06月26日 04:24
  • 1254

java guava 集合的操作:交集、差集、并集

Guava:google的工程师利用传说中的“20%时间”开发的集合库,它是对jdk提供的扩展,提供了很多实用的类来简化代码。 开源地址:https://github.com/google/gu...
  • huanyinghanlang
  • huanyinghanlang
  • 2017年12月11日 17:19
  • 558

MYSQL差集 交集 并集

SELECT ID FROM ( SELECT DISTINCT A.ID AS ID FROM TABLEA A #有ID: 1 2 3 4 5 UNION ALL ...
  • goodleiwei
  • goodleiwei
  • 2014年12月25日 17:43
  • 17557

求两个单链表的差集和并集

题目:- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30}...
  • f2016913
  • f2016913
  • 2017年07月27日 12:07
  • 763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求String的交集、并集、差集
举报原因:
原因补充:

(最多只允许输入30个字)