• Java基础(十八)Collection


    1. 去重统计

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

    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
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 交集计算

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

    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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    3. 差集运算

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

    	/**
         * 差集
         * @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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4. 对称差集运算

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

    	/**
         * 对称差集
         * @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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5. 并集

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

    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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6. 移除集合元素

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

    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();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    7. 统计字符出现的次数

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

    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    聚观早报 | 王思聪退出万达集团董事;腾讯申请微信输入法商标
    【ACWing 算法基础】栈和队列(用数组构造栈和队列)
    GitLab Runner 服务出现问题排查步骤
    第142篇:原生js实现响应式原理
    力扣:718. 最长重复子数组
    中国汽车供应商远赴德国,中国智驾方案能否远渡重洋?
    SAP ABAP给指定用户增加SAP ALL权限
    uni-app进阶使用(vuex、组件、api)
    STM32与GD32笔记
    【Node.js】Node.js入门(六):Express中间件函数
  • 原文地址:https://blog.csdn.net/bao_14440/article/details/132698704