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;
    }
}
相关推荐
Sunsets_Red几秒前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
自由生长202415 分钟前
从流式系统中思考-C++生态和Java生态的区别
java·c++
别来无恙blwy27 分钟前
SQL Server高可用自动故障转移失败(短时间内多次转移失败,只需一步可处理)
数据库·windows·sqlserver·负载均衡·可用性测试
培培说证27 分钟前
2026大专Java开发工程师,考什么证加分?
java·开发语言·python
qq_3363139328 分钟前
java基础-方法引用
java·开发语言·算法
总是学不会.31 分钟前
【JUC编程】一、线程的基础概念
java·开发语言·jvm
我是唐青枫35 分钟前
C#.NET struct 全解析:什么时候该用值类型?
开发语言·c#·.net
由之41 分钟前
Spring事件监听机制简单使用
java·spring
小鸡吃米…44 分钟前
Python - 类属性
java·前端·python
沉下去,苦磨练!1 小时前
计算一个字符串在另一个字符串中出现次数
java·开发语言