`

有两个字符串数组a和b,寻找相同元素(a、b都很大)

    博客分类:
  • Java
J# 
阅读更多

import java.util.*;
import java.util.logging.Logger;

public class Main {   
    private Logger logger = Logger.getLogger("ss");   
    public static void main(String[] args){
    	Main m = new Main();
    	m.getSameElementByList();
    	m.getSameElementByMap();
    }
    // 基本思路:相同 = 集合2-(集合2-集合1中相同的=不相同的)   
    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(String.valueOf(end-begin));   
    }   
    /**  
     * 把数组A的数据作为map的key,和value,然后用B的数据取值,不为NULL,说明相同  
     */  
    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(String.valueOf(end-begin));   
           
    }   
}//综合本论坛两种比较好的思路。需要的一起拿去,或者改正  
  从论坛上看到这个帖子讨论,挺好...特此记录

 

分享到:
评论

相关推荐

    matlab数组字符串

    - **相等性比较**:`isequal` 或 `strcmp` 可以比较两个字符串是否相同。 - **顺序比较**:`strcmpi` 对大小写不敏感,`strlessthan`、`strgreaterthan` 等用于比较字符串的顺序。 6. **数组操作**: - **索引...

    4-14_lv一维数组中所有元素之和_

    在LV中,一维数组通常表示为一排垂直排列的元素,每个元素都具有相同的数据类型,例如整数、浮点数或字符串。通过索引,我们可以访问和操作数组中的任意元素。 二、计算数组元素之和的原理 计算一维数组中所有元素...

    数据结构课件:第3章 数组和字符串.ppt

    数据结构中的数组和字符串是计算机...数组和字符串的特性使得它们在很多算法中不可或缺,如排序、搜索、动态规划等。理解和掌握这些基础知识是学习更高级的数据结构和算法的前提,也是成为一名熟练的程序员所必需的。

    数组及字符串排序

    例如,对一个字符串数组进行排序: ```java String[] strArray = {"apple", "banana", "cherry"}; Arrays.sort(strArray); ``` 这将按字典顺序排序字符串。如果需要自定义排序规则,可以创建一个实现了`Comparator...

    MATLAB数组字符串千字超详细解析

    `strcmp`函数则用于比较两个字符串是否相同,它返回1表示相等,0表示不等。在处理文本时,`strsplit`函数很有用,它可以根据指定的分隔符将字符串分解为子串数组,如`strsplit('Hello, world!', ', ')`会得到`{'...

    lotus domino 数组使用归纳总结

    - **数组字符串相关.doc**:可能涵盖了如何处理字符串数组,包括创建、连接和分割字符串数组。 - **数组中删除一个元素.txt**:展示如何在数组中模拟删除元素的过程,可能通过创建新的数组来实现。 - **判断是数组....

    易语言取数组内容异同

    在易语言中处理数组是非常常见的操作,而“取数组内容异同”则是数组处理中的一种重要功能,它涉及到比较两个或多个数组之间的元素差异,这对于数据处理、数据比较以及算法实现等方面都有很大的实际应用价值。...

    判断字符串是否回文

    这里定义了两个字符型数组`a`和`b`,长度均为5。这表示每个数组可以存储5个字符。 #### 四、用户输入与数组元素赋值 ```csharp for (i = 0; i ; i++) { a[i] = char.Parse(Console.ReadLine()); } ``` 通过`for`...

    罗穗骞《后缀数组——处理字符串的有力工具》(有算法源码和解题源码)

    通过计算LCP(Longest Common Prefix,最长公共前缀)数组,可以找出两个或多个字符串的最长公共子串。LCP数组是基于后缀数组的,表示相邻两个后缀的最长公共前缀的长度。源码实现这部分功能有助于读者更好地掌握...

    C语言中二维字符数组[文].pdf

    因此,当初始化二维字符数组时,编译器会根据每个字符串的实际长度分配内存,不会为所有元素预留相同的长度。每个字符串占用的空间仅与其实际长度加上终止符`\0`的长度有关。 4. 字符与字符串的转换: - 在处理...

    相同字符个数对比

    例如,如果我们有两个字符串A1和B1,可以分别计算A1和B1中相同字符的数量。假设我们要比较字符"A",则公式如下: ```excel =COUNTIF(A1, "A") + COUNTIF(B1, "A") ``` 将此公式应用于所有字符,即可得到两字符串...

    Matlab字符串比较

    字符串比较的本质是将两个字符串进行逐个字符比较,如果全部字符都相同,就说明这两个字符串相等,否则就不相等。在 Matlab 中,字符串比较操作有多种方法,常见的有==、isequal、strcmp 等函数。 使用=='进行字符...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    C语言程序设计标准教程

    4.方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。 5.不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量...

    C++第4章_数组与指针(C++课件,中南大学)

    这种结构在处理命令行参数时很有用,因为命令行参数通常以字符串数组的形式提供。 最后,引用于C++中是一个特殊的类型,它作为别名使用,引用一旦初始化后就必须始终引用同一个对象。引用不是独立的对象,而是现有...

    asp.net下比较两个等长字符串是否含有完全相同字符(忽略字符顺序)

    尤其是LCS算法,它不考虑字符顺序,能够判断两个字符串中字符的公共组合,对于处理更复杂的字符串相似度判断有极大的帮助。 ### 知识点7:算法优化 在实现字符串比较时,不仅要考虑算法的正确性,还要注重其实现的...

    matlab基础编程;6 MATLAB深入学习字符串.zip

    - `strcmp(str1, str2)`: 比较两个字符串是否相等,不区分大小写。 - `str2double(str)`: 将字符串转换为数值。 5. **字符串操作** MATLAB还支持字符串的高级操作,如正则表达式匹配(使用`regexp`和`regexprep`...

    VBA数组应用实例下载

    - **数组函数**:使用VBA内置函数,如`LBound`和`UBound`获取数组的下界和上界,`Join`和`Split`函数处理字符串数组。 - **数组与工作表交互**:将数组的数据写入Excel单元格,或者从单元格读取数据到数组,这在...

    回文报:一种用Java编写的算法,可以确定String数组中的内容是否使该字符串数组成为回文报

    总之,理解和实现回文报的算法是Java编程中的一项基本技能,它涉及到字符串处理、数组遍历、动态规划等多种编程概念,对提升编程思维和解决问题的能力有很大帮助。通过深入研究`Palindrome-master`项目,你将能够更...

Global site tag (gtag.js) - Google Analytics