取两个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. html tab页面切换事件。

    $(document).bind("visibilitychange",function(e){ //只对tab页面切换有效 //document.visibilityState ...

  2. [LeetCode] Hamming Distance 汉明距离

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  3. 基于C/S架构的3D对战网络游戏C++框架 _03服务器端详细设计

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  4. 在Eclipse中使用建立使用Gradle做依赖管理的Spring Boot工程

    前述: Gradle存在很长时间了,以前只知道Maven和ivy ,最近才知道有这个存在,因为以后要用这个了; 所以,要先学会怎么用这个工具,就从建立一个简单工程开始! 实际上以前是见过Gradle的 ...

  5. ImportError: cannot import name '_imagingtk'

    问题描述 使用tkinter画pillow生成的图片时,在tkinter中抛出此异常. 解决方案 pip install -I --no-cache-dir Pillow 更新pillow 重启解决一 ...

  6. 漫谈C++:良好的编程习惯与编程要点

    以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明 complex.h: # ifndef ...

  7. Web系统大规模并发——电商秒杀与抢购

    电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...

  8. CSS-用伪类制作小箭头(轮播图的左右切换btn)

    先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代 ...

  9. QT下调试基于ros的catkin项目

    1.首先告诉qt ros的搜索路径,通过修改qt creator 桌面启动程序来实现 sudo    gedit ~/.local/share/applications/DigiaQtOpenSour ...

  10. PHP 文件限速下载代码

    php 文件限速下载代码 <?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QU ...