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;
    }
}
相关推荐
鹏哥哥啊Aaaa5 分钟前
15.idea启动报错
java·ide·intellij-idea
super_lzb6 分钟前
VUE 请求代理地址localhost报错[HPM] Error occurred while trying to proxy request
java·spring·vue·springboot·vue报错
Dream_sky分享7 分钟前
IDEA 2025中TODO找不到
java·ide·intellij-idea
苏渡苇8 分钟前
用 Spring Boot 项目给工厂装“遥控器”:一行 API 控制现场设备!
java·人工智能·spring boot·后端·网络协议·边缘计算
伊甸39 分钟前
基于LangChain4j从0到1搭建自己的的AI智能体并部署上线-1
java·langchain·prompt
我待_JAVA_如初恋10 分钟前
重装系统后,idea被拦截,突然无法运行
java·ide·intellij-idea
郝学胜-神的一滴10 分钟前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生
东东51611 分钟前
校园短期闲置资源置换平台 ssm+vue
java·前端·javascript·vue.js·毕业设计·毕设
像少年啦飞驰点、11 分钟前
零基础入门 Spring Boot:从“Hello World”到独立可运行 Web 应用的完整学习闭环
java·spring boot·web开发·编程入门·后端开发
IT 行者11 分钟前
Spring MVC 慎用@InitBinder,谨防内存泄漏
java·spring·mvc