Collection接口的常用方法

Collection接口的常用方法

 

1、add方法:添加

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj);

} } class Student{ String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } }

输出结果:

[123, haha, com.learningTasks.collection.Student@2d98a335, rose]

优化:代码

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj); 
        System.out.println(obj.size());
    }
}
class Student{
    String name;
    int age;

    //重写toString
    @Override
    public String toString() {
        return  "name='" + name + '\'' +
                ", age=" + age ;
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}



输出结果:
[123, haha, name='HSpringX', age=19, rose]
4

输出obj默认输出obj.toString

重写了Student类的toString,所以输出的new Student变为这样。集合里面仍然是4个元素。

 

addAll:添加集合中的所以元素

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj);

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(345);
        obj1.add("haha");
        obj.addAll(obj1);
    }
}



输出:
[123, haha, name='HSpringX', age=19, rose]
[123, haha, name='HSpringX', age=19, rose, 345, haha]

 

clear:删除集合中的所有元素

public class CollectionTest {
    public static void main(String[] args) {

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(345);
        obj1.add("haha");
        obj1.clear();
        System.out.println(obj1.size());

    }
}



输出:
0

 

contains方法:包含

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj.contains(new Student("HSpringX",19)));
        //String中的equals方法被重写了,比较的是内容是否相等
        System.out.println(obj.contains(new String("rose")));
    }
}
class Student{
    String name;
    int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}


输出结果: false true

自定义类Student,equals方法为Object中的equals方法,需要重写才能满足比较内容是否相等的需求

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj.contains(new Student("HSpringX",19)));
        System.out.println(obj.contains(new String("rose")));
    }
}
class Student{
    String name;
    int age;
  //equals方法的重写 @Override public boolean equals(Object o) { System.out.println("equals被使用了"); if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } public Student(String name, int age) { this.name = name; this.age = age; } } 输出: equals被使用了 equals被使用了 equals被使用了 true true

 

containsAll:是否包含集合中的所有元素

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(345);
        obj1.add("haha");
        System.out.println(obj.containsAll(obj1));
        obj.addAll(obj1);
        System.out.println(obj.containsAll(obj1));
    }
}



输出
false
true

 

equals方法:判断相等性

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(123);
        obj1.add("haha");
        obj1.add(new Student("HSpringX",19));//重写了equals方法
        obj1.add(new String("rose"));
        System.out.println(obj.equals(obj1));
    }
}


输出:
equals被调用了
true

 

hashCode:返回哈希值

 

isEmpty:集合是否为空

 

iterator:返回集合中的所有元素的迭代器(遍历)

public class CollectionTest {
    public static void main(String[] args) {

        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
   //建议这样迭代,其他方法可能报错
        Iterator<Object> iterator = obj.iterator();
        //hasNext()判断是否有下一个元素
        while (iterator.hasNext()){
            //next()指针下移,返回元素
            System.out.println(iterator.next());

        }
    }
}



输出
123
haha
name='HSpringX', age=19
rose  

 

remove:移除元素(实例而不是索引)

!!!移除一个

public class CollectionTest {
    public static void main(String[] args) {

        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        System.out.println(obj.remove(123));
        System.out.println(obj);

    }
}



输出:
true
[haha, name='HSpringX', age=19, rose]

 

removeAll:移除集合之间的相同元素(差集)

!!!不看顺序与数量

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(345);
        obj1.add("haha");
        obj1.add(123);
        obj1.add("haha");
        obj1.add(new Student("HSpringX",19));
        obj1.add(new String("rose"));
        System.out.println(obj1.removeAll(obj));
        System.out.println(obj1);

    }
}



输出:
true
[345]

 

retainAll:保留两个集合的共同元素(交集)

!!!不看顺序与数量

public class CollectionTest {
    public static void main(String[] args) {
        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));

        Collection<Object> obj1 = new ArrayList<>();
        obj1.add(345);
        obj1.add("haha");
        obj1.add(123);
        obj1.add("haha");
        obj1.add(new Student("HSpringX",19));
        obj1.add(new String("rose"));
        System.out.println(obj1.retainAll(obj));
        System.out.println(obj1);

    }
}



输出:
true
[haha, 123, haha, name='HSpringX', age=19, rose]

size:集合中的元素数量

 

toArray:返回一个包含此集合中所有元素的数组(需要遍历输出)

public class CollectionTest {
    public static void main(String[] args) {

        Collection<Object> obj = new ArrayList<>();
        obj.add(123);
        obj.add("haha");
        obj.add(new Student("HSpringX",19));
        obj.add(new String("rose"));
        Object[] objects = obj.toArray();
        for(Object o:objects){
            System.out.println(o);

        } 
    }
}



输出:
123
haha
name='HSpringX', age=19
rose

 

 

 

数组---->集合

Arrays类中的类方法asList

        String[] s = {"aa", "bb"};
        List<String> strings = Arrays.asList(s);
        System.out.println(strings);    //输出[aa, bb]
        int[] i = {11, 22, 33};
        List<int[]> ints = Arrays.asList(i);
        //集合不能存储基本类型变量
        System.out.println(ints);    //输出[[I@5fd0d5ae]
        Integer[] integers = {11,22,33};
        List<Integer> integers1 = Arrays.asList(integers);
        System.out.println(integers1);    //输出[11, 22, 33]

 

上一篇:彻底搞懂深拷贝与浅拷贝


下一篇:【Java】弱引用的相关使用