import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;   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);   } //测试insect   String[] result_insect = intersect(arr1, arr2);   System.out.println("求交集的结果如下:");   for (String str : result_insect) {   System.out.println(str);   }  //测试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);   }
}  

求并集的结果如下:
d
abc
df
cc求交集的结果如下:
abc
df求差集的结果如下:
cc
d

转载于:https://www.cnblogs.com/rvs-2016/p/5733684.html

java求字符串数组交集、并集和差集相关推荐

  1. java求集合的交集、差集和并集

    一.本文介绍两种写法 1原生写法 2com.google.guava写法 <dependency>     <groupId>com.google.guava</grou ...

  2. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  3. java 中文 音序,java 中文字符串数组按照音序排列

    java 中文字符串数组按照音序排列 复制代码 代码如下: public class SortComparator implements Comparator{ public int compare( ...

  4. php 去重_php求两数组交集的四种方法详解

    题目:给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1],nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5 ...

  5. c++中求字符串数组的min/max

    1.函数:(作用:返回容器中最小值和最大值.) min_element() max_element max_element(first,end,cmp);其中cmp为可选择参数! 第三个参数cmp可写 ...

  6. [Java][JavaScript]字符串数组与字符串之间的互转(join/split)(转)

    原文:http://blog.csdn.net/szwangdf/article/details/4177104 1.Java 1-1.字符串数组=>字符串:StringUtils: join( ...

  7. Java中字符串数组的输入与输出

    今天刷题遇到一个坑,老是接收不到字符串数组.即用str[i]=sc.nextLine();这样的方式去接收数组的话,打印的时候总是会少一个. import java.util.Scanner;publ ...

  8. java 将字符串数组清空_在Java中如何将字符串集转换为字符串数组

    详细内容 在Java中将字符串集(Set)转换为字符串数组(String[])的方法有:使用for循环,使用Set.toArray()方法,使用Arrays.copyOf()方法等等.下面我们就来具体 ...

  9. C语言求字符串数组的长度函数计算

    常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的. sizeof():主要负责计算数组的长度: strlen():主要负责计算字符串的长度. (1)siz ...

  10. java初始化字符串数组_在java中如何定义一个字符串数组

    展开全部 1. java中定义一个字符串数组方式如32313133353236313431303231363533e59b9ee7ad9431333366306465下,string类型和其他基本类型 ...

最新文章

  1. c++强大还是python强大-如果C++很强大,为什么它不及Java、Python流行?
  2. group by 和 having(转载)
  3. 学JS的心路历程 -函式(三)this
  4. 聊聊我的高效学习法,让你快速拿下算法、MySQL…每天只花半小时
  5. FFmpeg 4.2“艾达”发布
  6. 10.27模拟 总结
  7. 大小不固定的图片和多行文字的垂直水平居中
  8. 计算机基本运行方式,我今天才知道的电脑运行方式,你知道吗?
  9. ABBYY FineReader PDF for Mac(PDF转换工具)
  10. Jquery中选择器
  11. java redis3.0_Java + Redis(第三章)
  12. vs如何运行外部 C++ 文件
  13. 2022年全球市场聚苯硫醚纤维总体规模、主要生产商、主要地区、产品和应用细分研究报告
  14. gym103261 I. Euclid‘s Algorithm
  15. Win10卸载预装软件最全教程
  16. Python使用geany工具配置方法
  17. 坐标转换 | EXCEL中WGS84转GCJ02,并在地图上标注
  18. ASR自动语音识别技术
  19. 严重: The web application [] appears to have started a thread named [Thread-
  20. Qt on Android 调用安卓原生方法

热门文章

  1. jQuery—$ is not a function
  2. placeholder—Jquery插件placeholder的使用方法
  3. php 写入.csv文件注意点
  4. Springboot+JasperReport报表打印
  5. Spring之切入点表达式
  6. javaSE基础知识 知识点(一)
  7. JAVA输入jdb,解决 JAVA 单步调试键盘输入被 JDB 占用的问题
  8. jooq spring mysql_【中级篇】详细讲解使用SpringBoot + Jooq整合(一)
  9. intellij怎么找实现_学习播音主持配音之后,自己该怎么利用自己所学实现变现呢?...
  10. Rulo扫地机器人app_扫地机器人扫不干净 为什么我还推荐大家买?