`
yangfuchao418
  • 浏览: 165932 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

有两个字符串数组a和b,寻找相同元素 (a和b都比较大),求效率最高的解答

    博客分类:
  • java
J# 
阅读更多
呵呵,论坛有人在讨论下面题目的最后解法,本人综合了下大家的思路,欢迎大家指正

/*
 * 有两个字符串数组a和b,寻找相同元素 (a和b都比较大),求效率最高的解答
 */
public class compareArray {
    private Logger logger = Logger.getLogger(compareArray.class);

    // 基本思路:相同 = 集合2-(集合2-集合1中相同的=不相同的)
    @Test
    public void getSameElementByList() {
        Long begin=System.currentTimeMillis();
        String[] strArr1 = { "xiaoxin", "niutou", "shanqiu", "luobo" };
        String[] strArr2 = { "xiaoxin", "ggg", "shanqiu", "meile", "dddsf", "niutou" };
        List<String> coll = Arrays.asList(strArr1);
        List<String> coll2 = Arrays.asList(strArr2);
        List<String> alter0 = new ArrayList<String>(coll2);
        List<String> alter1 = new ArrayList<String>(coll);
        List<String> alter2 = new ArrayList<String>(coll2);
        alter2.removeAll(alter1);
        Iterator<String> it1 = alter2.iterator();
        while (it1.hasNext())
            logger.info(it1.next());
        logger.info("-------华丽的分割线-----------");
        alter0.removeAll(alter2);
        Iterator<String> it2 = alter0.iterator();
        while (it2.hasNext())
        {
            logger.info(it2.next());
        }
        Long end=System.currentTimeMillis();
        logger.info(end-begin);
    }
    /**
     * 把数组A的数据作为map的key,和value,然后用B的数据取值,不为NULL,说明相同
     */
    @Test
    public void getSameElementByMap(){
        Long begin=System.currentTimeMillis();
        logger.info("-------华丽的分割线-----------");
        String[] strArr1 = { "xiaoxin", "niutou", "shanqiu", "luobo" };
        String[] strArr2 = { "xiaoxin", "ggg", "shanqiu", "meile", "dddsf", "niutou" };
        HashMap<String,Object> map=new HashMap<String, Object>();
        for (String string1 : strArr1) {
            map.put(string1, string1);
        }
        for (String string2 : strArr2) {
            Object j=map.get(string2);
            if(j!=null){
                logger.info(j.toString());
            }
        }
        Long end=System.currentTimeMillis();
        logger.info(end-begin);
        
    }
}
 
分享到:
评论

相关推荐

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    其核心思想是,遍历数组b中的每一个元素,再分别在数组a中查找是否有与之相同的元素,如果找到,则将这个元素从数组a中删除。这个过程需要特别注意的是,每次从数组a中删除一个元素后,其后面的元素会向前移动,因此...

    自己写两个判断字符串数组是否相等或数组内容是否相同,大家看下怎么改进下

    而“内容相同”通常指的是两个数组包含的字符串尽管顺序可能不同,但所有字符串都相同,没有重复且没有遗漏。 在Java中,我们可以使用以下几种方法来判断两个字符串数组是否相等: 1. 使用`equals()`方法:这是最...

    字符串数组.zip

    字符串数组是由多个字符串组成的数组,每个数组元素都是一个字符串。这种数据结构在处理大量相关文本信息时非常有用,例如存储用户输入、文件名或者任何需要分组管理的文本数据。 在编程语言中,字符串数组的创建和...

    字符串数组操作类

    这里首先创建了一个包含两个字符串 `"jiang"` 和 `"cui"` 的数组 `ss`,然后使用这个数组初始化了 `StringArray` 类的一个实例 `str1`。 #### 2. 添加元素 ```csharp str1.AddAt("zou", 0); // 在索引0处添加 "zou...

    matlab字符串数组

    - **字符串数组**:每个元素都是一个独立的字符序列,可以有不同的长度,无需填充。 - **字符串标量**:只有一个元素的字符串数组,等同于单个字符串。 2. **创建字符串数组**: - 双引号包围文本可以创建一个...

    字符串数组-Matlab

    在MATLAB中,字符串数组是一种非常实用的数据结构,它允许我们方便地处理和操作文本数据。这个主题将深入探讨如何创建、操作以及利用...通过熟练掌握字符串数组的使用,可以极大地提升MATLAB编程的效率和代码的可读性。

    Labview-比较两个字符串,显示相同字符个数

    Labview-比较两个字符串,显示相同字符个数

    输入10个字符串到一个字符串数组

    - **字符比较**:`if (s[j] &gt; s[j + 1])` 用于比较两个相邻字符的大小,以实现排序逻辑。 ### 3. 数组操作 #### 3.1 数组声明与初始化 - **声明数组**:`String str[] = new String[10];` 声明了一个长度为 10 的...

    字符串数组 matlab.docx

    当你将两个字符串数组或一个字符串与一个字符串数组相加时,MATLAB 会按元素进行连接: ```matlab str1 = ["hello", "world"]; str2 = ["foo", "bar"]; str3 = str1 + " " + str2; ``` 上面的代码会生成一个新的...

    字符串和数组的转化

    本篇文章将详细探讨如何使用LabVIEW实现字符串与数组之间的转化,主要基于提供的两个VI:`string to array.vi`和`array to string.vi`。 首先,让我们了解字符串和数组的基本概念。在LabVIEW中,字符串是由字符组成...

    C语言中的字符串数组和字符串指针.pdf

    在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...

    C语言数组:C语言数组定义、二维数组、动态数组、字符串数组_C语言中文网1

    字符串处理函数如`strlen()`计算字符串的长度,`strcpy()`复制字符串,`strcat()`连接字符串,`strcmp()`比较字符串等,都是C语言标准库中的函数。 6.5 C语言字符串处理函数 C语言中的字符串处理函数提供了丰富的...

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    当你需要比较两个JSON对象中的数组并找出它们共有的元素时,可以采用几种不同的方法。在这个场景下,我们将探讨如何实现这个功能,并点击一个按钮后,将新数组的结果输出。这涉及到JavaScript的数据操作、数组遍历...

    VC使用CStringArray类创建和使用字符串数组

    它是一个动态数组,能够方便地添加、删除和访问字符串元素。下面我们将深入探讨如何使用`CStringArray`类来创建和操作字符串数组。 首先,我们需要了解`CString`类。`CString`是MFC对C++标准字符串库的一个增强,...

    matlab创建字符,MATLAB字符串数组的创建与运算.docx

    在上面的示例中,我们使用 `[A, a]` 将两个字符串 `A` 和 `a` 连接起来,形成一个新的字符串数组 `Aa`。 字符串替换和查找 在 MATLAB 中,提供了多种字符串替换和查找函数。例如: ```matlab &gt;&gt; strrep(str1, str2...

    关于数组的应用和字符串的讲解

    在编程领域,数组和字符串是两种非常基础且重要的数据结构,它们被广泛应用于各种软件开发中。本节将深入探讨数组的应用和字符串的讲解。 数组是程序设计中的基本构造块,它允许程序员存储和管理一组相同类型的数据...

    字符串数组 matlab详情介绍使用.doc

    字符串数组是由一连串字符组成的,每个元素可以是任意长度的字符串。这种数据结构提供了丰富的功能,包括索引、拼接、比较、替换和搜索等,使得在 MATLAB 中处理文本变得非常方便。 首先,创建字符串数组可以通过在...

    matlab数组字符串的使用

    这会创建一个名为 `str` 的字符串数组,其中每个元素都是一个单独的字符串。 2. **访问字符串数组元素**: 要访问字符串数组中的元素,我们可以使用索引。在 MATLAB 中,索引从 1 开始。例如,要获取第一个元素 ...

    java 数组和字符串

    ### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...

    MATLAB字符串数组 基本规则 (1)所有字符串都用单引号(英文状态下输入)括起来; (2)将字符串当作一个行向量,每个元素对

    - `strncmpi(s1,s2,n)`:忽略大小写比较两个字符串前n个字符。 了解并熟练掌握这些规则和函数,可以极大地提高在MATLAB中处理字符串的效率和灵活性。通过`help`命令,可以获取更多关于这些函数的详细信息和使用示例...

Global site tag (gtag.js) - Google Analytics