呵呵,论坛有人在讨论下面题目的最后解法,本人综合了下大家的思路,欢迎大家指正
/*
* 有两个字符串数组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);
}
}
分享到:
相关推荐
其核心思想是,遍历数组b中的每一个元素,再分别在数组a中查找是否有与之相同的元素,如果找到,则将这个元素从数组a中删除。这个过程需要特别注意的是,每次从数组a中删除一个元素后,其后面的元素会向前移动,因此...
而“内容相同”通常指的是两个数组包含的字符串尽管顺序可能不同,但所有字符串都相同,没有重复且没有遗漏。 在Java中,我们可以使用以下几种方法来判断两个字符串数组是否相等: 1. 使用`equals()`方法:这是最...
字符串数组是由多个字符串组成的数组,每个数组元素都是一个字符串。这种数据结构在处理大量相关文本信息时非常有用,例如存储用户输入、文件名或者任何需要分组管理的文本数据。 在编程语言中,字符串数组的创建和...
这里首先创建了一个包含两个字符串 `"jiang"` 和 `"cui"` 的数组 `ss`,然后使用这个数组初始化了 `StringArray` 类的一个实例 `str1`。 #### 2. 添加元素 ```csharp str1.AddAt("zou", 0); // 在索引0处添加 "zou...
- **字符串数组**:每个元素都是一个独立的字符序列,可以有不同的长度,无需填充。 - **字符串标量**:只有一个元素的字符串数组,等同于单个字符串。 2. **创建字符串数组**: - 双引号包围文本可以创建一个...
在MATLAB中,字符串数组是一种非常实用的数据结构,它允许我们方便地处理和操作文本数据。这个主题将深入探讨如何创建、操作以及利用...通过熟练掌握字符串数组的使用,可以极大地提升MATLAB编程的效率和代码的可读性。
Labview-比较两个字符串,显示相同字符个数
- **字符比较**:`if (s[j] > s[j + 1])` 用于比较两个相邻字符的大小,以实现排序逻辑。 ### 3. 数组操作 #### 3.1 数组声明与初始化 - **声明数组**:`String str[] = new String[10];` 声明了一个长度为 10 的...
当你将两个字符串数组或一个字符串与一个字符串数组相加时,MATLAB 会按元素进行连接: ```matlab str1 = ["hello", "world"]; str2 = ["foo", "bar"]; str3 = str1 + " " + str2; ``` 上面的代码会生成一个新的...
本篇文章将详细探讨如何使用LabVIEW实现字符串与数组之间的转化,主要基于提供的两个VI:`string to array.vi`和`array to string.vi`。 首先,让我们了解字符串和数组的基本概念。在LabVIEW中,字符串是由字符组成...
在C语言中,字符串数组和字符串指针是处理字符串的两种常用方法,它们在定义、引用、数据空间、存储单元分配和赋值方面各有特点和区别。 首先,字符串数组是由多个字符型元素构成的集合,它在内存中占据连续的存储...
字符串处理函数如`strlen()`计算字符串的长度,`strcpy()`复制字符串,`strcat()`连接字符串,`strcmp()`比较字符串等,都是C语言标准库中的函数。 6.5 C语言字符串处理函数 C语言中的字符串处理函数提供了丰富的...
当你需要比较两个JSON对象中的数组并找出它们共有的元素时,可以采用几种不同的方法。在这个场景下,我们将探讨如何实现这个功能,并点击一个按钮后,将新数组的结果输出。这涉及到JavaScript的数据操作、数组遍历...
它是一个动态数组,能够方便地添加、删除和访问字符串元素。下面我们将深入探讨如何使用`CStringArray`类来创建和操作字符串数组。 首先,我们需要了解`CString`类。`CString`是MFC对C++标准字符串库的一个增强,...
在上面的示例中,我们使用 `[A, a]` 将两个字符串 `A` 和 `a` 连接起来,形成一个新的字符串数组 `Aa`。 字符串替换和查找 在 MATLAB 中,提供了多种字符串替换和查找函数。例如: ```matlab >> strrep(str1, str2...
在编程领域,数组和字符串是两种非常基础且重要的数据结构,它们被广泛应用于各种软件开发中。本节将深入探讨数组的应用和字符串的讲解。 数组是程序设计中的基本构造块,它允许程序员存储和管理一组相同类型的数据...
字符串数组是由一连串字符组成的,每个元素可以是任意长度的字符串。这种数据结构提供了丰富的功能,包括索引、拼接、比较、替换和搜索等,使得在 MATLAB 中处理文本变得非常方便。 首先,创建字符串数组可以通过在...
这会创建一个名为 `str` 的字符串数组,其中每个元素都是一个单独的字符串。 2. **访问字符串数组元素**: 要访问字符串数组中的元素,我们可以使用索引。在 MATLAB 中,索引从 1 开始。例如,要获取第一个元素 ...
### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...
- `strncmpi(s1,s2,n)`:忽略大小写比较两个字符串前n个字符。 了解并熟练掌握这些规则和函数,可以极大地提高在MATLAB中处理字符串的效率和灵活性。通过`help`命令,可以获取更多关于这些函数的详细信息和使用示例...