Collection接口基本方法

package cn.test.collection;

import java.util.ArrayList;
import java.util.Collection;

/* *集合:集合是存储对象数据的集合容器 * * 集合比数组的优势: * 1.集合可以存储任意类型的对象数据,数组只能存储同一数据类型的数据 * 2.集合的长度是会发生变化的,数组的长度是固定不变的 * * ---| Collection 单例集合的根接口。 * ------|List 如果是实现类List接口的集合类,具备的特点是: 有序 ,可重复 * ------|Set 如果实现了Set接口的集合类,具备的特点是:无序,不可重复 * * Collection中的方法 * * 增加 * add(E e) 添加成功返回true添加失败返回false * addAll(Collection c) //把一个集合的元素添加到另外一个集合中去 * * 删除 * clear() 清除集合中的所有元素 * remove(Object o) 删除集合中的指定元素 * removeAll(Collection c) 删除一个集合的交集元素 retainAll(Collection c) 保留交集元素,其他非交集元素删除掉 * 查看 * size() 查看元素的个数 * 判断 * contains(Object o) * containsAll(Collection<?> c) equals(Object o) isEmpty() * 迭代 * iterator() * toArray() */


public class Demo2 {

    public static void main(String[] args) {
//      Collection c = new Collection; 接口不可以创建对象,可以使用多态
        Collection c = new ArrayList();//创建一个实现类对象

        /*c.add("abc"); c.add(1); c.add(3.14);*/

        c.add("令计划");
        c.add("徐才厚");
        c.add("周永康");
        System.out.println("添加成功吗?"+c.add("郭美美"));

        //创建集合
        Collection c2 = new ArrayList();
        c2.add("徐才厚");
        c2.add("房祖名");
        c2.add("狗娃");
        /* * c.addAll(c2);//把c2集合中的元素添加到c集合中去S */      

        /*删除方法: c.clear(); System.out.println("删除成功吗?"+c.remove("郭美美")); c.removeAll(c2); c.retainAll(c2); */
        System.out.println("查看集合的元素的个数:"+c.size());
        System.out.println("集合的元素:"+c);

    }


}

package cn.test.collection;

import java.util.ArrayList;
import java.util.Collection;

/* * 判断 * contains(Object o) * containsAll(Collection<?> c) equals(Object o) isEmpty() * */

class  Person{

    int id;

    String name;

    public Person(int id, String name) {

        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "{编号:"+this.id+" 姓名:"+this.name+"}";
    }

    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
        Person p = (Person)obj;
        return this.id== p.id;
    }

    //java规定一般重写了equals方法,那么就会从写hashCode方法 
    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return this.id;
    }



} 
class Dog{

}

public class Demo3 {

    public static void main(String[] args) {
        /*Collection c = new ArrayList<>(); c.add("令计划"); c.add("徐才厚"); c.add("周永康"); System.out.println("判断集合是否是空:"+c.isEmpty()); System.out.println("判断集合是否存在指定的元素:"+c.contains("狗娃"));*/

        //集合添加自定义的元素
        Collection  c = new ArrayList(); 
        c.add(new Person(110, "狗娃"));
        c.add(new Person(120, "狗剩"));
        c.add(new Person(130, "狗三"));
        c.add(new Person(140, "狗四"));

// c.contains(new Dog());//用到的是实参的equals方法
        Collection  c2 = new ArrayList(); 
        c2.add(new Person(110, "狗娃"));
        c2.add(new Person(120, "狗剩"));
        c2.add(new Person(102, "陈狗"));

        System.out.println("c集合有包含c2集合中的所有元素吗?"+c.containsAll(c2));
        //如果在现实生活中 只要身份证编号一致,那么就为同一个人,看源代码要看Arraylist的实现方法
        System.out.println("存在该元素吗?"+c.contains(new Person(120, "狗剩")));//false 其实contains方法内部是依赖equal方法进行比较的
        System.out.println("集合的元素是:"+c);

    }
}




package cn.test.collection;

import java.util.ArrayList;
import java.util.Collection;

/*
 * 迭代
 *  iterator() 
 *  toArray() 
 * 
 */
public class Demo4 {

    public static void main(String[] args) {
        /*Collection c = new ArrayList();//创建一个实现类对象

        c.add("令计划");
        c.add("徐才厚");
        c.add("周永康");

        //集合可以存储任意类型的元素,所以需要用Object类型的数组接收
        Object[] arr = c.toArray();//把集合中的元素全部存储到一个Object的数组中返回
        System.out.println("数组的元素:"+c);*/

        Collection  c = new ArrayList(); 
        c.add(new Person(110, "狗娃"));
        c.add(new Person(120, "狗剩"));
        c.add(new Person(130, "狗三"));
        c.add(new Person(140, "狗四"));
        Object[] arr = c.toArray();
        //需求: 把编号是110的人的信息输出
        /*for (int i = 0; i < arr.length; i++) {
            if(arr[i].equals(new Person(110, " "))){
                System.out.println("编号为110的元素为:"+arr[i]);
            }
        }*/
        for (int i = 0; i < arr.length; i++) {
            Person p = (Person)arr[i];//强制类型转换为Person存储,从Object数组中取出的元素只能使用Object类型的声明变量接收。
            if(p.id == 110){
                System.out.println(p);
            }
        }
    }

}

你可能感兴趣的:(Collection)