java求字符串数组交集、并集和差集
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求字符串数组交集、并集和差集相关推荐
- java求集合的交集、差集和并集
一.本文介绍两种写法 1原生写法 2com.google.guava写法 <dependency> <groupId>com.google.guava</grou ...
- Java求字符串中出现次数最多的字符
Java求字符串中出现次数最多的字符 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611 Java ...
- java 中文 音序,java 中文字符串数组按照音序排列
java 中文字符串数组按照音序排列 复制代码 代码如下: public class SortComparator implements Comparator{ public int compare( ...
- php 去重_php求两数组交集的四种方法详解
题目:给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1],nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5 ...
- c++中求字符串数组的min/max
1.函数:(作用:返回容器中最小值和最大值.) min_element() max_element max_element(first,end,cmp);其中cmp为可选择参数! 第三个参数cmp可写 ...
- [Java][JavaScript]字符串数组与字符串之间的互转(join/split)(转)
原文:http://blog.csdn.net/szwangdf/article/details/4177104 1.Java 1-1.字符串数组=>字符串:StringUtils: join( ...
- Java中字符串数组的输入与输出
今天刷题遇到一个坑,老是接收不到字符串数组.即用str[i]=sc.nextLine();这样的方式去接收数组的话,打印的时候总是会少一个. import java.util.Scanner;publ ...
- java 将字符串数组清空_在Java中如何将字符串集转换为字符串数组
详细内容 在Java中将字符串集(Set)转换为字符串数组(String[])的方法有:使用for循环,使用Set.toArray()方法,使用Arrays.copyOf()方法等等.下面我们就来具体 ...
- C语言求字符串数组的长度函数计算
常见的计算长度的函数有两个,sizeof()和strlen(),但是,它们之间的差别还是很大的. sizeof():主要负责计算数组的长度: strlen():主要负责计算字符串的长度. (1)siz ...
- java初始化字符串数组_在java中如何定义一个字符串数组
展开全部 1. java中定义一个字符串数组方式如32313133353236313431303231363533e59b9ee7ad9431333366306465下,string类型和其他基本类型 ...
最新文章
- c++强大还是python强大-如果C++很强大,为什么它不及Java、Python流行?
- group by 和 having(转载)
- 学JS的心路历程 -函式(三)this
- 聊聊我的高效学习法,让你快速拿下算法、MySQL…每天只花半小时
- FFmpeg 4.2“艾达”发布
- 10.27模拟 总结
- 大小不固定的图片和多行文字的垂直水平居中
- 计算机基本运行方式,我今天才知道的电脑运行方式,你知道吗?
- ABBYY FineReader PDF for Mac(PDF转换工具)
- Jquery中选择器
- java redis3.0_Java + Redis(第三章)
- vs如何运行外部 C++ 文件
- 2022年全球市场聚苯硫醚纤维总体规模、主要生产商、主要地区、产品和应用细分研究报告
- gym103261 I. Euclid‘s Algorithm
- Win10卸载预装软件最全教程
- Python使用geany工具配置方法
- 坐标转换 | EXCEL中WGS84转GCJ02,并在地图上标注
- ASR自动语音识别技术
- 严重: The web application [] appears to have started a thread named [Thread-
- Qt on Android 调用安卓原生方法
热门文章
- jQuery—$ is not a function
- placeholder—Jquery插件placeholder的使用方法
- php 写入.csv文件注意点
- Springboot+JasperReport报表打印
- Spring之切入点表达式
- javaSE基础知识 知识点(一)
- JAVA输入jdb,解决 JAVA 单步调试键盘输入被 JDB 占用的问题
- jooq spring mysql_【中级篇】详细讲解使用SpringBoot + Jooq整合(一)
- intellij怎么找实现_学习播音主持配音之后,自己该怎么利用自己所学实现变现呢?...
- Rulo扫地机器人app_扫地机器人扫不干净 为什么我还推荐大家买?