package string;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class StringArray {
public static void main(String[] args) {
//测试union
String[] arr1 = {"abc", "df", "abc"};
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("------------------疯狂的分割线---------------------");
//测试minus
String[] result_minus = minus(arr1, arr2);
System.out.println("求差集的结果如下:");
for (String str : result_minus) {
System.out.println(str);
}
}
//求两个字符串数组的并集,利用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>();
LinkedList<String> list = new LinkedList<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 (Entry<String, Boolean> e : map.entrySet()) {
if (e.getValue().equals(Boolean.TRUE)) {
list.add(e.getKey());
}
}
String[] result = {};
return list.toArray(result);
}
//求两个数组的差集
public static String[] minus(String[] arr1, String[] arr2) {
LinkedList<String> list = new LinkedList<String>();
LinkedList<String> history = new LinkedList<String>();
String[] longerArr = arr1;
String[] shorterArr = arr2;
//找出较长的数组来减较短的数组
if (arr1.length > arr2.length) {
longerArr = arr2;
shorterArr = arr1;
}
for (String str : longerArr) {
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : shorterArr) {
if (list.contains(str)) {
history.add(str);
list.remove(str);
} else {
if (!history.contains(str)) {
list.add(str);
}
}
}
String[] result = {};
return list.toArray(result);
}
}
程序运行,打印输出:
求并集的结果如下:
d
abc
df
cc
---------------------可爱的分割线------------------------
求交集的结果如下:
abc
df
---------------------疯狂的分割线------------------------
求差集的结果如下:
cc
d
(转载自:http://blog.sina.com.cn/s/blog_4934a04a0100fqmf.html)
分享到:
相关推荐
集合元素可以是字母、整数或字符串,它们的大小和长度由数组表示。设计中需要定义数组存储集合元素,构造方法处理运算,并输出运算结果。算法思想主要包括定义数组,创建集合,比较元素,调用相应方法实现交、并、差...
它包含了许多核心的Java语言功能增强,使得处理字符串、数组、日期时间以及反射等任务变得更加简单。 1. **字符串处理**: - `StringUtils` 类提供了大量对字符串操作的静态方法,如空格处理、比较、格式化、分割...
7. SQL操作:如交集、并集、差集,使用UNION、INTERSECT、MINUS等关键字。 8. WHERE与HAVING:WHERE用于选择行,HAVING用于分组后的筛选。 五、Spring与SpringBoot 1. Spring Boot核心配置:application.properties...
本文将详细介绍Hive函数的应用,包括聚合函数、数学函数、集合函数、类型转换函数、日期函数、条件函数、字符串函数和表生成函数等。 聚合函数 聚合函数用于对一组值执行计算,通常与SELECT语句的GROUP BY子句一起...
这些集合支持迭代器遍历,可以方便地进行集合间的操作,如并集、交集和差集。 列表(Lists)提供了有序的元素存储,fastutil的实现包括动态数组列表(ArrayLists)和链表(LinkedLists)。它们提供了按索引访问元素...
5. `union(SinglyList list)`方法:求并集,遍历第一个链表,如果元素不在第二个链表中(即遍历第二个链表时未找到相同的元素),则将该元素添加到结果字符串中。 在求交集的过程中,`addAll`方法会检查两个链表中...
3. 传统集合运算主要包括并集、差集和交集,这些概念在数据库查询和数据处理中非常常见。 4. 客户端脚本语言主要用于浏览器端,例如VBScript,它常用于早期的ASP网页开发。其他选项中的ASP和PHP是服务器端脚本语言...
8. 传统集合运算包括并集、差集和交集,而不包括数学运算如加减乘除。 9. 使用文本值作为查询准则可以简化查询条件,便于用户理解和操作。 10. 合法的常量包括浮点数、整数、字符串、字符等,如 `3e2`, `-.1e-1`, `'...
17. Java程序的main方法定义可以有多种形式,只要包含public、static、void关键字和一个字符串数组参数即可,所以A、B、C、D选项都是正确的。 18. 数据库管理系统(DBMS)是一组软件,用于管理和处理数据库。 19. ...
7. 集合运算:传统的集合运算是指并集、差集和交集,而选择、投影和连接是关系代数中的运算。 8. 一对多关系:在数据库中,一对多关系意味着一个表的记录可以与另一个表的多个记录匹配。 9. Java中的字符串比较:`...
23. 集合运算:传统的集合运算包括并集、差集和交集。 24. 运算符优先级:在大多数编程语言中,算术运算符的优先级从高到低依次是乘法和除法(*/)、除法(/)、模运算(%)和加法和减法(+ -)。 25. 窗体属性:...
- 集合(Set):无序且不重复的数据集合,支持交集、并集、差集等操作。 - 映射/字典(Dictionary/Map):由键值对组成的无序集合,通过键来查找对应的值。 3. 数据类型的操作: - 赋值:通过等号(=)将一个值...
其他选项如交集、并集和差集等运算通常只适用于相同基数的关系。 ### 4. 字符串数组的长度 - **知识点**: 计算字符串数组的长度需要考虑空字符'\0'。 - **详细解释**: 在C语言中,字符串实际上是字符数组,并且...
- 集合操作:并集、交集、差集等。 - 排序:对集合进行定制排序。 ### 5. Commons Net Commons Net 提供了网络通信所需的工具类,包括: - FTP 客户端:支持 FTP 协议,进行文件上传、下载、删除等操作。 - ...
- **集合运算**:支持集合的并集、交集和差集运算,这对于处理大数据集合非常有用。 ##### 常用命令 - **`SADD key values [value1 value2 …]`**:向集合中添加一个或多个成员。如果成员已存在于集合中,则不会...
- **传统集合运算**:并集、差集和交集是数据库中最基本的传统集合运算,因此选项B是正确的。 ### 19. SQL 视图创建 - **视图创建**:题目描述的SQL语句是在test数据库的students表上创建名为V_test的视图,因此...
3. 集合(Set):无序且不重复的元素集合,支持数学运算如并集、交集和差集。 4. 字典(Dictionary):键值对的集合,通过键来快速查找值,提供了高效的查找效率。 接着,我们来看看几种重要的算法: 1. 排序算法: -...
集合用于集合运算,如并集、交集和差集。 11. VFP表单文件:Visual FoxPro中,可执行的表单文件扩展名为`.SCX`。 12. C++标识符:标识符可以由字母、数字和下划线组成,且不能以数字开头。正确选项是B. `a3_b3_123...
集合则是一组不重复元素的无序集合,支持数学集合操作如并集、交集和差集。 理解并熟练运用这些基本概念和数据类型,是每个程序员的必修课。它们构成了程序设计的底层逻辑,是构建高效、可靠软件的基础。在学习过程...
1. **关系运算**:关系R和关系S可以进行多种运算,如交集、并集、差集和笛卡尔积。题目中提到的合法运算为`R×S`,代表关系R和关系S的笛卡尔积,将R的每一行与S的每一列组合,形成新的元组。 2. **Word操作**:在...