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);
}
}
分享到:
相关推荐
读者还可以参考相关的专题教程和书籍,如《PHP数学运算技巧总结》、《PHP运算与运算符用法总结》、《PHP字符串(String)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《PHP程序设计算法...
输入方法读取用户提供的集合元素,显示方法用于打印集合内容,交集、并集和差集方法分别实现了对应的集合运算,而笛卡尔积方法则负责生成并打印所有的有序对。 通过实际操作,学生不仅能掌握集合运算的理论知识,还...
实验的目标是创建一个C语言程序,该程序能够处理集合的并集、交集和差集操作。集合元素限定为小写字母,用户通过输入字符串来表示集合,程序会自动过滤非法字符和重复字符。用户与计算机进行交互,根据提示选择操作...
- **集合**:集合内部是由一个没有重复元素的字符串数组表示,支持交集、并集、差集等操作。 - **有序集合**:与集合类似,但是每个元素都关联了一个分数,可以按照分数进行排序。 - **哈希**:哈希由字段(field)和...
- `CollectionUtils` 提供了集合的高级操作,如分页、过滤、合并、求交集、并集、差集等。 6. **异常处理**: - `ExceptionUtils` 可以获取堆栈跟踪信息、处理异常和包装异常,使异常处理更加灵活。 7. **数学...
这个程序旨在帮助用户理解如何处理集合的交集、并集和差集等基本运算。以下是这个项目涉及的相关知识点: 1. **C++ 编程语言**:C++ 是一种中级编程语言,它继承了 C 语言的强大功能,并增加了面向对象编程(OOP)...
集合的交集、并集、差集和补集操作,以及字典的键值对添加、删除、更新等操作。"2.6.py"可能包含了一些逻辑控制结构,如条件语句(if...else)、循环(for、while)等,用于处理组合数据类型。 "约瑟夫环.png"是一...
6. **哈希表和集合操作**:演示如何使用Go的内置map实现查找、插入和删除操作,以及集合的交集、并集和差集运算。 7. **堆和优先队列**:实现最小堆和最大堆,用于解决优先级队列问题,如Top K问题。 8. **字符串...
- **集合**:无序不重复元素的集合,可以进行交集、并集、差集等操作。 4. **字典** - **键值对**:Python的字典是动态大小的关联数组,通过键来访问对应的值。 - **字典方法**:如get()、update()、keys()、...
集合是无序的不重复元素序列,支持集合操作如交集、并集和差集。 函数是Python中组织代码的基本单元,书中会阐述如何定义函数、传递参数、返回值以及函数式编程的概念,如高阶函数和闭包。此外,读者还将学习到...
3. 集合(Sets):无序且不重复的元素集合,支持数学集合操作如交集、并集和差集。 4. 字典(Dictionaries):键值对的无序集合,通过键来访问对应的值,提供快速查找。 5. 字符串(Strings):不可变的字符序列,用于处理...
- **实验内容与要求**:编写一个程序,实现两个整数集合的基本运算,包括并集、差集和交集。具体地,输入两个整数集合{24235}和{2510},输出第一个集合的元素个数以及它们进行集合运算后的结果。 - **实验程序**...
位图索引是一种数据结构,通过将数据映射到位数组中,实现了快速的查询和操作,如查找、交集、并集和差集。 在 Pilosa 中,数据被分片存储在多个节点上,这种分布式架构使得系统能够水平扩展,以处理PB级别的数据。...
掌握集合的交集、并集、差集等操作。 六、字符串处理 1. 字符串操作:学习字符串的拼接、查找、替换、分割等方法。 2. 格式化输出:掌握`f-string`,`%`操作符,以及`str.format()`方法进行字符串格式化。 七、...
5. **集合**:无序不重复元素集合,支持交集、并集、差集等操作。 6. **栈**:后进先出(LIFO)数据结构,可用列表实现。 7. **队列**:先进先出(FIFO)数据结构,Python的collections模块提供了Queue和...
- `Set`:不包含重复元素的集合,支持交集、并集、差集等操作。 - `Map`:键值对存储,键可以是任何类型,比对象更灵活。 11. **事件委托** - 通过在父元素上监听事件,处理子元素的事件,提高性能和减少内存...
3. 获取复选框值:在JSP中,获取一组复选框的值应使用`getParameterValues()`方法,因为复选框可能有多个选中项,返回的是字符串数组。 4. 计算机存储器:计算机的存储系统包括内存(RAM)和外存(如硬盘、U盘等)...
- 集合(Set):无序且不重复的数据集合,支持交集、并集、差集等操作。 - 映射/字典(Dictionary/Map):由键值对组成的无序集合,通过键来查找对应的值。 3. 数据类型的操作: - 赋值:通过等号(=)将一个值...
书中将探讨如何利用位操作进行位图的布尔运算,如并集、交集和差集。 9. **算法优化**:书中涵盖了许多经典的算法优化技术,如动态规划、贪心算法和分治策略,并结合位操作进行深入讲解,帮助程序员写出更优的解决...
- 集合是一个无序的不重复元素序列,常用于成员关系测试、去重、交集、并集和差集操作。两者都支持数学集合操作。 以上知识点详细解释了计算机二级考试中涉及到的编程基础、数据库管理、网络、操作系统、编程语言...