取两个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数组的交集的更多相关文章

  1. 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...

  2. 求两个排序数组的交集和并集----时间复杂度O(n+m)

    问题: 给你两个排序的数组,求两个数组的交集. 比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5,n是a数组大小,m是b数组大小. 思路: (1)从b数组遍历取 ...

  3. 两个string数组对应比较

    最近做的array string类型对比.这个可能比较复杂,用的是linq 是请教别人的,我在这里记录一下 jquery 方法里面的数组 function arrtxt() { var arrt= [ ...

  4. [Linux] 取两个文件的并集/交集/差集

    uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...

  5. 取两个DataTable的交集,删除重复数据

    /// <summary> /// 取两个DataTable的交集,删除重复数据 /// </summary> /// <param name="sourceD ...

  6. (C#) 求两个数组的交集

    基本上在面试的时候,会具体到两个int数组,或string数组.具体也就是讨论算法. 首先需要的是和面试的人确认题目的含义,并非直接答题. 然后,可以提出自己的想法,首先最快的是用linq { Lis ...

  7. lambda取两字符串的交集

    取两个有规律字符串的交集,字符串的格式如下: “[3095139,9080109]” jar支持: fastjson 程序demo: import com.alibaba.fastjson.JSON; ...

  8. 【LeetCode题解】349_两个数组的交集

    目录 [LeetCode题解]349_两个数组的交集 描述 方法一:两个哈希表 Java 实现 类似的 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 ...

  9. Leecode刷题之旅-C语言/python-349两个数组的交集

    /* * @lc app=leetcode.cn id=349 lang=c * * [349] 两个数组的交集 * * https://leetcode-cn.com/problems/inters ...

随机推荐

  1. Android/Linux下CGroup框架分析及其使用

    1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...

  2. Django框架

    一.首先,到底什么是框架? 想要回答这个问题,我们要慢慢来. ①首先从DRY原则开始说起 Don't Repeat Yourself,不要重复你的代码. DRY原则的重要性怎么提都不过分,很多人说编程 ...

  3. weui 多网页切换效果分析

    weui的文档写的不怎么详尽,简单的来讲WeUI 为微信 Web 服务量身设计的h5框架. WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户 ...

  4. ES6深入学习记录(二)promise对象相关

    1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和强大.ES6将其写进了语言标准,统一了用法,原生提供了promise对象. 所谓Promis ...

  5. 源码编译安装postgresql

    依赖的库:libreadline-dev,zlib1g-dev 安装:下载解压源码包,然后 ./configure,make,make install即可.. 注意不能在root账户下跑server, ...

  6. JFinalConfig配置

    package com.sandu.common.config; import com.jfinal.config.Constants; import com.jfinal.config.Handle ...

  7. maven上传jar到nexus本地仓库

    一.nexus新增本地仓库 Hosted Repository:本地仓库,部署组织内部的版本内容 Proxy Repository:代理仓库,代理远程的公共仓库,如maven中央仓库 Virtual ...

  8. C#读取Excel,或者多个excel表,返回dataset

    把excel 表作为一个数据源进行读取 /// <summary> /// 读取Excel单个Sheet /// </summary> /// <param name=& ...

  9. broadcasting Theano vs. Numpy

    broadcasting Theano vs. Numpy broadcast mechanism allows a scalar may be added to a matrix, a vector ...

  10. spring mvc 的jpa JpaRepository数据层 访问方式汇总

    本文转载至:http://perfy315.iteye.com/blog/1460226 AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spri ...