JAVA集合——Collection接口

TestCollection.java

package com.it.java;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import org.junit.Test;

/* 1.储存对象的方法:a.数组 b.集合
 * 2.数组存储对象的特点:Student[] stu = new Student[20]; stu[0] = new Student();....
 *   >-弊端:a.一旦创建,其长度不可变   b.真实的数组存放的对象的个数是不可知的
 * 3.集合:
 *      Collection接口
 *         |----List接口:存储有序的可以重复的元素
 *             |----ArrayList(主要实现类)、
 *                  LinkedList(对于频繁的插入和选择操作,相当于链表)、
 *                  Vector(古老的实现类、线程安全的,但一般不用)
 *         |----set接口:存储无序的,不可重复的元素
 *             |----HashSet、LinkedHashSet、TreeSet
 *      Map接口:存储“键-值”对的数据
 *         |----HashMap、LinkedHashMap、TreeMap、Hashtable(子类:Properties)
 *      */
public class TestCollection {
    @Test
    public void testCollection1() {
        Collection coll = new ArrayList();
        //1.size():返回集合中元素的个数
        System.out.println(coll.size());

        //2.add(Object obj):向集合中添加一个元素
        coll.add(123);
        coll.add("aa");
        coll.add(new Date());
        coll.add("BB");
        System.out.println(coll.size());

        //3.addAll(Collection coll):将形参coll中包含的所有元素添加到当前集合
        Collection coll1 = Arrays.asList(1,2,3);
        coll.addAll(coll1);
        System.out.println(coll.size());

        //查看集合元素
        System.out.println(coll);

        //4.isEmpty():判断集合是否为空
        System.out.println(coll.isEmpty());

        //5.clear():清空集合元素
        coll.clear();
        System.out.println(coll.isEmpty());
    }

    @Test
    public void testCollection2() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add("aa");
        coll.add(new Date());
        coll.add("BB");
        //Person p = new Person("MM",23); //建了一个Person类
        coll.add(new Person("MM",23));
        System.out.println(coll);
        //6.contains(Object obj):判断集合中是否包含指定的obj元素,是返回ture,否返回false
        //判断依据,根据元素所在类的equals()方法判断
        //明确:如果存入集合中的元素是自定义类的对象,自定义的类要重写equals()
        Boolean b1 = coll.contains(123);
        b1 = coll.contains("aa");
        System.out.println(b1);
        boolean b2 = coll.contains(new Person("MM", 23));
             //会报false,原因是系统会认为与原先定义的一致,需重写Person类中的equals方法
        System.out.println(b2);

        //7.containsAll(Collection coll):判断当前集合中是否包含coll中的所有元素
        Collection coll1 = new ArrayList();
        coll1.add(123);
        coll1.add(new String("aa"));
        boolean b3 = coll.containsAll(coll1);
        System.out.println("#" + b3);

        //8.retainAll(Collection coll):求当前集合与coll的共有元素
        coll.retainAll(coll1);

        //9.remove(Object obj):删除集合中的obj元素
        boolean b4 = coll.remove("BB");
        System.out.println(b4);

        //10.removeAll(cll1):删除两个集合的交集
        coll.removeAll(coll1);
        System.out.println(coll);

        //11.equals(Object obj):判断集合中的所有元素是否完全相同
        Collection coll2 = new ArrayList();
        coll2.add(123);
        coll2.add(new String("AA1"));
        System.out.println(coll1.equals(coll2));

        //12.hashCode()
        System.out.println(coll.hashCode());

        //13.toArry():将集合转化成数组
        Object[] obj = coll.toArray();
        for (int i = 0; i < obj.length; i++) {
            System.out.println(obj[i]);
        }

        //14.iterator():返回一个Iterator接口实现类的对象,进而实现集合的遍历
        Iterator iteraor = coll.iterator();
        //方式一:不用
        System.out.println(iteraor.next());
        //方式二:不用
        for (int i = 0; i < coll.size(); i++) {
            System.out.println(iteraor.next());
        }
        //方式三:使用
        while(iteraor.hasNext()) {
            System.out.println(iteraor.next());
        }
    }
}

Person.java

package com.it.java;

public class Person {
    private String name;
    private Integer age;
    public Person(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Person() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age == null) {
            if (other.age != null)
                return false;
        } else if (!age.equals(other.age))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值