Java基础(十八)Collection

1. 去重统计

使用一个List集合存储多个元素。计算集合中共有多少个不重复元素并输出。

java 复制代码
import java.util.HashSet;
import java.util.List;

public class RemoveDuplicates01 {
    public static void main(String[] args) {
        List<String> list = List.of("1","2","1","a","b","a");
        HashSet<String> hashSet = new HashSet<>();
        // addAll 将所有元素添加到 HashSet;
        hashSet.addAll(list);
        System.out.println(hashSet.size());  // 4
    }
}

2. 交集计算

有两个List集合, 计算两个集合的交集元素。

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListIntersection02 {
    public static void main(String[] args) {
        List<String> list1 = List.of("1","2","1","a","b","a");
        List<String> list2 = List.of("1","2","c","a","0");

        List intersection = intersection(list1, list2);
        System.out.println("交集为" + intersection);
    }

    /**
     * 获取交集
     * @param list1
     * @param list2
     * @return List
     */
    public static List intersection(List<String> list1, List<String> list2) {
        // 使 list1 的长度最小
        if (list1.size() > list2.size()) {
            return intersection(list2, list1);
        }
        ArrayList list = new ArrayList();
        for (String str : list1) {
            if (list2.contains(str)) {
                list.add(str);
            }
        }
        return list;
    }
}

3. 差集运算

有两个List集合, 计算第一个集合对第二个集合的差集元素。

java 复制代码
	/**
     * 差集
     * @param list1
     * @param list2
     * @return List
     */
    public static List differenceSet(List<String> list1, List<String> list2) {
        ArrayList list = new ArrayList();
        for (String str : list1) {
            if (!list2.contains(str)) {
                list.add(str);
            }
        }
        return list;
    }

4. 对称差集运算

有两个List集合, 计算两个集合的对称差集元素。

java 复制代码
	/**
     * 对称差集
     * @return List
     */
    public static List<String> symmetryDifferenceSet(List<String> list1, List<String> list2) {
        ArrayList<String> list = new ArrayList<>();
        list.addAll(differenceSet(list1, list2));
        list.addAll(differenceSet(list2, list1));
        return list;
    }

5. 并集

有两个List集合, 计算两个集合的并集元素。

java 复制代码
public static List<String> union(List<String> list1, List<String> list2) {
        ArrayList<String> list = new ArrayList<>();
        list.addAll(symmetryDifferenceSet(list1, list2));
        list.addAll(intersection(list1, list2));
        return list;
    }

6. 移除集合元素

使用Set集合存储多个字符串,移除其中长度为奇数的字符串

java 复制代码
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class RemoveSetElements06 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("你好");
        set.add("hello");
        set.add("hello word");
        set.add("你好,世界");

        ramoveElements(set);
        System.out.println((set));
    }

    public static void ramoveElements(Set<String> set) {
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            String str = iterator.next();
            // 判断长度是否为奇数
            if (str.length() % 2 != 0) {
                iterator.remove();
            }
        }
    }
}

7. 统计字符出现的次数

使用集合统计一段文本中各个字符出现的次数。

java 复制代码
import java.util.HashSet;

public class Count07 {
    public static void main(String[] args) {
        String str = "Hello world!!!";
        HashSet<String> set = new HashSet<>();
        for (int i = 0; i < str.length(); i++) {
            set.add(str.charAt(i) + "");
        }
        for (String str1 : set) {
            System.out.println(str1 + ":" + count(str, str1));
        }
    }

    public static int count(String str, String c) {
        if (str == null) {
            return 0;
        }
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (c.equals(str.charAt(i) + "")) {
                count ++;
            }
        }
        return count;
    }
}
相关推荐
asdfg125896310 分钟前
一个例子理解Java中的函数式接口
java·函数式接口
toolsmith15 分钟前
一个商业软件的License校验,居然把验签的证书放在了License文件里
java
wuminyu17 分钟前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
存在morning23 分钟前
【PySpark 学习笔记 三】DataFrame API 入门
android·java·数据库
AC赳赳老秦25 分钟前
企业标签体系搭建:基于 OpenClaw 采集的多维度公开数据,构建企业画像标签库
java·运维·服务器·python·信息可视化·deepseek·openclaw
智嵌研习社29 分钟前
Ollama 本地大模型完全配置指南:Modelfile 参数与系统环境变量深度解析
java·开发语言
XZ-07000142 分钟前
1-1-可视化-练习
开发语言·python
Crawl1 小时前
5.登录与分页功能分析
java·后端
今天AI了吗1 小时前
AI Agent 在数据分析领域的落地判断:哪些场景真的需要 Agent
java·数据库·人工智能·python·sql·数据分析·copilot
SimonKing1 小时前
SwitchHosts V5大改版,我发现了这些惊喜和坑
java·后端·程序员