文档章节

用Java求字符串数组的的交集和并集

杀丶破狼
 杀丶破狼
发布于 2014/08/22 10:29
字数 296
阅读 1340
收藏 9
package com.array;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.HashSet;  
import java.util.Iterator;  
import java.util.List;  
import java.util.Map;  
import java.util.Set;  
import java.util.Map.Entry;  
  
public class StringArray  
{  
  
    public static void main(String[] args)  
    {  
        // 测试union  
        String[] arr1 = { "abc", "df", "abcd" };  
        String[] arr2 = { "abc", "cc", "df", "d", "abc" };  
        String[] result_union = union(arr1, arr2);  
        System.out.println("求并集的结果如下:");  
        for (String str : result_union)  
        {  
            System.out.println(str);  
        }  
        System.out.println("---------------------可爱的分割线------------------------");  
        // 测试insect  
        String[] result_insect = intersect(arr1, arr2);  
        System.out.println("求交集的结果如下:");  
        for (String str : result_insect)  
        {  
            System.out.println(str);  
        }  
        System.out.println("---------------------可爱的分割线------------------------");  
    }  
  
    // 求两个字符串数组的并集,利用set的元素唯一性  
    public static String[] union(String[] arr1, String[] arr2)  
    {  
        Set<String> set = new HashSet<String>();  
        for (String str : arr1)  
        {  
            set.add(str);  
        }  
        for (String str : arr2)  
        {  
            set.add(str);  
        }  
        String[] result = {};  
        return set.toArray(result);  
    }  
  
    // 求两个数组的交集  
    public static String[] intersect(String[] arr1, String[] arr2)  
    {  
        Map<String, Boolean> map = new HashMap<String, Boolean>();  
        List<String> list = new ArrayList<String>();  
        for (String str : arr1)  
        {  
            if (!map.containsKey(str))  
            {  
                map.put(str, Boolean.FALSE);  
            }  
        }  
        for (String str : arr2)  
        {  
            if (map.containsKey(str))  
            {  
                map.put(str, Boolean.TRUE);  
            }  
        }  
  
        for (Iterator<Entry<String, Boolean>> it = map.entrySet().iterator();it.hasNext();)  
        {  
            Entry<String,Boolean> e = (Entry<String,Boolean>)it.next();  
            if (e.getValue().equals(Boolean.TRUE))  
            {  
                list.add(e.getKey());  
            }  
        }  
        return list.toArray(new String[] {});  
    }  
      
}


打印结果:

求并集的结果如下:
d
abc
df
abcd
cc
---------------------可爱的分割线------------------------
求交集的结果如下:
abc
df
---------------------可爱的分割线------------------------


本文转载自:http://blog.csdn.net/lovesomnus/article/details/25037509

杀丶破狼
粉丝 8
博文 63
码字总数 11552
作品 0
南京
程序员
私信 提问
关于java中split的使用

之前在http://shukuiyan.iteye.com/blog/507915文中已经叙述过这个问题,但是最近一次笔试中居然有碰到了这个知识点,而且还做错了,囧!学艺不精啊。题目大概是这样的: Java代码 String s...

墨梅
2014/04/28
183
0
Summary for NSSet

集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本...

sirier
2012/11/24
128
0
编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议67~82)

有些东西,当你即将失去了的时候,你才懂得它的弥足珍贵,也许亡羊补牢,为时未晚! 建议67:不同的列表选择不同的遍历算法 建议68:频繁插入和删除时使用LinkedList 建议69:列表相等只关心...

青衣霓裳
07/18
100
0
redis系列:通过共同好友案例学习set命令

前言 这一篇文章将讲述Redis中的set类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 项目Github地址:https://github.com/rainbowda/learnWay/tree/master/learnRedis/case-s...

云枭zd
2018/07/25
0
0
《俗人笔记》之《Java基础语法上》

基础前言: 二进制: 十进制转二进制:使用除以2获取余数来算 二进制转十进制:按8421编码 字节: 最小的存储单位是字节,最小的信息单位是位(bit) 1B=8bit 1KB=1024B 依次类推 DOS命令 盘符...

钱无极
2018/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
9
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部