取两个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 ...
随机推荐
- [LeetCode] Trips and Users 旅行和用户
The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...
- [LeetCode] Largest Number 最大组合数
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- .Net Core Linux centos7行—发布程序到生产环境
实验demo现在需要发布到生产环境,发现在发布的时候要考虑到不一致的几个地方. 1.各类配置文件线下,线上不一致. 2.绑定的url不一致,可能是域名不一致,也可能是schema不一致(http,ht ...
- 修改hosts文件在本地使域名解析到指定IP
# Additionally, comments (such as these) may be inserted on individual # lines or following the mac ...
- blog (后续更新)
设计Model(设计数据库) from django.db import models # Create your models here. class BlogsPost(models.Model) ...
- neo4j-备份、恢复
neo4j备份命令(本例linux) neo4j-backup 命令使用: ./neo4j-backup -full -from single://[machine IP] -to ~/backup- ...
- vue-validator(vue验证器)
官方文档:http://vuejs.github.io/vue-validator/zh-cn/index.html github项目地址:https://github.com/vuejs/vue-v ...
- bzoj 1711 [Usaco2007 Open]Dining吃饭&&poj 3281 Dining
最大流. 这东西好像叫三分图匹配. 源点向每个食物点连一条容量为1的边. 每个饮料点向汇点连一条容量为1的边. 将每个牛点拆点,食物点向喜欢它的牛的入点连一条容量为1的边,牛的出点向它喜欢的饮料点连一 ...
- Django自定义模板
定义simple_tag步骤 一.创建templatetags文件 首先在app下创建templatetags文件:名字不许叫这个,不能改变. 二.在文件中创建一个py文件 文件名自定义 三.在创建的 ...
- javaScript timer控制
<script type="text/javascript"> ; //间隔一秒循环执行 var id = setInterval(function () { num ...