取两个String数组的交集
取两个string数组的交集,首先将第一个数组的值作为key,value为false存储在map集合中;然后将第二个数组的值循环去判断map中key是否存在,存在就讲key对应的value改成true,否则不做变化;
最后,取出map中value为true的key,就是两个数组的交集。
备注:方法一当数组中有重复数据时,map设置key时会把重复的值丢掉,方法二会将两个数组中所有重复值打印出来;
方法一:
1 import org.testng.annotations.Test;
2 import java.util.HashMap;
3 import java.util.LinkedList;
4 import java.util.List;
5 import java.util.Map;
6
7
8 public class test {
9 @Test//测试程序
10 public void test(){
11 String[] arr1 = {"112","wqw","2121"};
12 String[] arr2 = {"112","aad","ewqw"};
13 String[] result=StringIntersection(arr1,arr2);
14 for (String str:result){
15 System.out.printf(str);
16 }
17 }
18 //取两个string数组的交集
19 public String[] StringIntersection(String[] arr1,String[] arr2){
20 Map<String,Boolean> map = new HashMap<String,Boolean>();
21 List<String> list = new LinkedList<String>();
22 //取出str1数组的值存放到map集合中,将值作为key,所以的value都设置为false
23 for (String str1:arr1){
24 if (!map.containsKey(str1)){
25 map.put(str1,Boolean.FALSE);
26 }
27 }
28 //取出str2数组的值循环判断是否有重复的key,如果有就将value设置为true
29 for (String str2:arr2){
30 if (map.containsKey(str2)){
31 map.put(str2,Boolean.TRUE);
32 }
33 }
34 //取出map中所有value为true的key值,存放到list中
35 for (Map.Entry<String,Boolean> entry:map.entrySet()){
36 if (entry.getValue().equals(Boolean.TRUE)){
37 list.add(entry.getKey());
38 }
39 }
40 //声明String数组存储交集
41 String[] result={};
42 return list.toArray(result);
43 }
44 }
方法二:
package com.java8; import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors; public class StringArrayTest { public static void main(String[] args) {
String[] arr1 = {"112","wqw","2121","112"};
String[] arr2 = {"112","aad","ewqw", "112"};
List list1 = Arrays.asList(arr1); //将数组转化为list
List list2 = Arrays.asList(arr2);
List list = (List) list1.stream().filter(a -> list2.contains(a)).collect(Collectors.toList());
System.out.println(list); //打印出list String[] arr = (String[])list.toArray(new String[list.size()]); //转化为数组
for (String a:arr){
System.out.println(a); //打印出数组中每个元素
}
}
}
取两个String数组的交集的更多相关文章
- 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...
- 求两个排序数组的交集和并集----时间复杂度O(n+m)
问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...
- 两个string数组对应比较
最近做的array string类型对比.这个可能比较复杂,用的是linq 是请教别人的,我在这里记录一下 jquery 方法里面的数组 function arrtxt() { var arrt= [ ...
- [Linux] 取两个文件的并集/交集/差集
uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...
- 取两个DataTable的交集,删除重复数据
/// <summary> /// 取两个DataTable的交集,删除重复数据 /// </summary> /// <param name="sourceD ...
- (C#) 求两个数组的交集
基本上在面试的时候,会具体到两个int数组,或string数组.具体也就是讨论算法. 首先需要的是和面试的人确认题目的含义,并非直接答题. 然后,可以提出自己的想法,首先最快的是用linq { Lis ...
- lambda取两字符串的交集
取两个有规律字符串的交集,字符串的格式如下: “[3095139,9080109]” jar支持: fastjson 程序demo: import com.alibaba.fastjson.JSON; ...
- 【LeetCode题解】349_两个数组的交集
目录 [LeetCode题解]349_两个数组的交集 描述 方法一:两个哈希表 Java 实现 类似的 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 ...
- Leecode刷题之旅-C语言/python-349两个数组的交集
/* * @lc app=leetcode.cn id=349 lang=c * * [349] 两个数组的交集 * * https://leetcode-cn.com/problems/inters ...
随机推荐
- java多线程系类:JUC线程池:06之Callable和Future(转)
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...
- [转]SQL 常用函数及示例
原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...
- Android组件化和插件化开发
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...
- 样式重置 css reset
新浪的初始化: html,body,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,form,fieldset,legend,img { ; padding: 0 } fi ...
- 《Just for Fun》读后感
这本书有一个长长的中文名字:<只是为了好玩:Linux之父林纳斯自传>,所以博客标题我就用英文书名了. 读罢此书,不禁想起一位长者的名言:“一个人的成功当然要靠自我奋斗,但也要考虑历史的进 ...
- TypeScript 素描 - 接口
/* 接口 C#写多了,接口也自然也是理解的.不过TypeScript中的接口与 C#中的还是有些区别的 接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约 */ //为方法的参数做契约 i ...
- EasyUI 解决 datagrid 中 NumberBox 限制小数位数后不能输入小数点问题
初始化界面,发现编辑datagrid,不能输入小数点. var arrColumnsCNT = [[ { title: '毛重', field: 'GrossWeight', halign: 'cen ...
- okhttp封装时,提示 cannot resolve method OkHttpClient setConnectTimeout() 函数
如标题所示,okhttp封装时,提示 cannot resolve method OkHttpClient setConnectTimeout() 函数,有遇到这样现象的朋友吗? 原因:因使用的是 ...
- IOC Unity
1. 依赖倒置原则和IOC2. IOC(Inversion of Control)的好处3. 介绍和使用Unity依赖倒置原则(DIP):上层和下层之间,依赖抽象,而不依赖细节IOC 控制反转,把上端 ...
- MVC
PureMVC--一款多平台MVC框架 http://www.jianshu.com/p/47deaced9eb3 MVC,MVP 和 MVVM 的图示 http://www.ruanyifeng.c ...