• Java基础(二十)集合(2)Collection接口


      1.Collection接口通常不被直接使用。但是Collection接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作,因为List接口和Set接口都实现了Collection接口,所以这些方法对List集合和Set集合时通用的。

      创建一个集合类可以这样定义:

    Collection<String> list_1 = new ArrayList<>();

      由于Java中不能对接口进行实例化,而Collection接口的子接口是List接口,ArrayList类实现了List接口,所以可以通过ArrayList类实例化并声明为Collection类型。

      2.Collection接口定义的常用方法

      

      (1)addAll(Collection<? extends E> col)方法:用来将指定集合中的所有对象添加到该集合中。如果对该集合进行了泛化,则要求指定集合中的所有对象都符合泛化类型,否则在编译程序时将抛出异常,其中E为用来泛化的类型。

    package collection.jun.iplab;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class MethodTest_addAdd {
    
        public static void main(String[] args) {
            
            String a = "A";
            String b = "B";
            String c = "C";
            
            Collection<String> list_1 = new ArrayList<>();
            list_1.add(a);
            list_1.add(b);
            
            Collection<String> list_2 = new ArrayList<>();
            // 由于list_1中的对象类型都是String, 同时list_2的泛型定义为String, 才可以使用这个方法。
            list_2.addAll(list_1);
            list_2.add(c);
            
            Iterator<String> it_1 = list_1.iterator();
            while (it_1.hasNext()) {
                String str = (String) it_1.next();
                System.out.print(str + " ");
            }
            
            System.out.println();
            
            Iterator<String> it_2 = list_2.iterator();
            while (it_2.hasNext()) {
                String str = (String) it_2.next();
                System.out.print(str + " ");
            }
        }
    }
    
    输出:
    A B 
    A B C 

      (2)removeAll(Collection<? col)方法:用来从集合中移除同时包含在指定集合中的对象,与retainAll()方法正好相反。如果存在符合移除条件的对象则返回true,否则返回false。

    package collection.jun.iplab;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class MethodTest_removeAll {
    
        public static void main(String[] args) {
            
            String a = "A";
            String b = "B";
            String c = "C";
            
            Collection<String> list_1 = new ArrayList<>();
            list_1.add(a);
            list_1.add(b);
            
            Collection<String> list_2 = new ArrayList<>();
            list_2.add(a);
            list_2.add(b);
            
            Collection<String> list_3 = new ArrayList<>();
            list_3.add(b);
            list_3.add(c);
            
            Collection<String> list_4 = new ArrayList<>();
            list_4.add(c);
            
            boolean isContain_1_3 = list_1.removeAll(list_3);
            System.out.print(isContain_1_3 + " ");
            
            Iterator<String> it_1 = list_1.iterator();
            while (it_1.hasNext()) {
                String str = (String) it_1.next();
                System.out.print(str + " ");
            }
            
            System.out.println();
            
            boolean isContain_2_4 = list_2.removeAll(list_4);
            System.out.print(isContain_2_4 + " ");
            
            Iterator<String> it_2 = list_2.iterator();
            while (it_2.hasNext()) {
                String str = (String) it_2.next();
                System.out.print(str + " ");
            }
            
            
        }
    }
    
    输出:
    true A 
    false A B 

      (3)retainAll(Collection<? col)方法:仅保留该集合中同时包含在指定集合中的对象,其他的全部移除,与removeAll()方法正好相反。如果存在符合移除条件的对象则返回true,否则返回false。

    package collection.jun.iplab;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class MethodTest_retainAll {
    
        public static void main(String[] args) {
            
            String a = "A";
            String b = "B";
            String c = "C";
            
            Collection<String> list_1 = new ArrayList<>();
            list_1.add(a);
            list_1.add(b);
            
            Collection<String> list_2 = new ArrayList<>();
            list_2.add(b);
            
            Collection<String> list_3 = new ArrayList<>();
            list_3.add(b);
            list_3.add(c);
            
            // list_1中的b为list_3中也有的对象,所以仅保留b,返回true
            boolean isContain_1_3 = list_1.retainAll(list_3);
            System.out.print(isContain_1_3 + " ");
            
            Iterator<String> it_1 = list_1.iterator();
            while (it_1.hasNext()) {
                String str = (String) it_1.next();
                System.out.print(str + " ");
            }
            
            System.out.println();
            
            // list_3中的c为list_2中没有的对象,所以返回false,不移除数据。
            boolean isContain_2_3 = list_2.retainAll(list_3);
            System.out.print(isContain_2_3 + " ");
            
            Iterator<String> it_2 = list_2.iterator();
            while (it_2.hasNext()) {
                String str = (String) it_2.next();
                System.out.print(str + " ");
            }
            
            
        }
    }
    
    输出:
    true B 
    false B 

      (4)containAll()方法:查看在该集合中是否存在指定集合中的所有对象。如果存在则返回true,否则返回false。

    package collection.jun.iplab;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class MethodTest_containAll {
    
        public static void main(String[] args) {
            
            String a = "A";
            String b = "B";
            String c = "C";
            
            Collection<String> list_1 = new ArrayList<>();
            list_1.add(a);
            list_1.add(b);
            
            Collection<String> list_2 = new ArrayList<>();
            list_2.add(b);
            
            Collection<String> list_3 = new ArrayList<>();
            list_3.add(b);
            list_3.add(c);
            
            boolean isContain_1_2 = list_1.containsAll(list_2);
            System.out.print(isContain_1_2 + " ");
            
            System.out.println();
            
            boolean isContain_1_3 = list_1.containsAll(list_3);
            System.out.print(isContain_1_3 + " ");
                
        }
    }
    
    输出:
    true 
    false 

      (5)toArray(T[] t)方法:用来获得一个包含所有对象的指定类型的数组。

    package collection.jun.iplab;
    
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class MethodTest_toArray {
    
        public static void main(String[] args) {
            
            String a = "A";
            String b = "B";
            String c = "C";
            
            Collection<String> list = new ArrayList<>();
            list.add(a);
            list.add(b);
            list.add(c);
            
            // 创建一个String类型的数组对象的实例
            String[] strs = new String[1];
            // 将数组类型的实例传递进来,用来指定想要获得的数组的类型为String
            String[] strs_2 = list.toArray(strs);
            
            for (String string : strs) {
                System.out.print(string + " ");
            }
            
            System.out.println();
            
            for (int i = 0; i < strs_2.length; i++) {
                String string = strs_2[i];
                System.out.print(string + " ");
            }
            
    
                
        }
    }
    
    输出:
    null 
    A B C 

      

  • 相关阅读:
    Java判断一个字符是数字或字母
    java数组和字符串相互转换
    java 字符串截取的三种方法
    Templates && Algorithms
    挖坑——未完成题目列表QwQ
    作业_2018.08.25
    BZOJ1008 [HNOI2008]越狱 (快速幂,组合)
    UR #3 核聚变反应强度( gcd )
    A Super Hero
    NOIP2015 pj
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/9408180.html
Copyright © 2020-2023  润新知