取两个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. [LeetCode] Combination Sum IV 组合之和之四

    Given an integer array with all positive numbers and no duplicates, find the number of possible comb ...

  2. [LeetCode] Integer Break 整数拆分

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...

  3. 做中学(Learning by Doing)之背单词-扇贝网推荐

    做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...

  4. solr.net的使用

    引子 最近在做一个日志系统,用普通关系型数据库做数据查询遇到了查询的瓶颈,想到了用成熟的搜索应用服务,我所知道的比较成熟的搜索应用服务有solr和es(elasticsearch),由于时间比较仓促, ...

  5. Python 日常积累

    包管理 >from ... import ... 的用法和直接import的区别 直接使用import时,如果需要使用到导入模块内的属性和方法,必须使用模块名.属性和模块名.方法的方式进行调用 ...

  6. Android 第三方图表类 MPChart 的使用

    先看看条形图的的效果还不错是吧,实现这样的效果很合适呢! 还有折线图.饼图很多效果 效果不错对吧~ 下面我们就先来看看条形图的实现方法吧! 第一步: 引入第三方包 MPChart 如果你碰巧看过我之前 ...

  7. 在html中添加script脚本的方法和注意事项

    在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...

  8. EventBus使用

    转自 http://blog.csdn.net/harvic880925/article/details/40660137

  9. geolocation/ 百度地图api Geolocation 定位当前城市信息

    根据当前所处位置 定位所在城市信息 <html> <head> <meta charset="UTF-8" /> <title>js ...

  10. BZOJ 4726: [POI2017]Sabota?

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 301  Solved ...