Java中Collection接口中的常用方法

关于java.util.Collection接口中常用的方法:

Collection是所有单元素存储集合的根接口,要想学习集合,就必须了解它们的父接口有什么方法。

1、Collection中能存放什么类型的元素?

没有使用“泛型”时,Collection中可以存储Object的所有子类型。
使用了“泛型”之后,Collection中只能存储某个具体的类型。

集合中不能直接存储基本数据类型,也不能直接存java对象,而是存储java对象的内存地址


2、Collection中常用方法(接口中的方法属于抽象方法,public abstract都可以省略不写):

(1)boolean add(Object obj);
向集合中添加Object型元素

(2)int size();
获取集合中元素的个数

(3)void clear();
清空集合中的所有元素

(4)boolean contains(Object o);
判断集合中是否存在某个指定对象

(5)boolean remove(Object o);
删除集合中的指定对象

(6)boolean isEmpty();
判断集合中的元素个数是否为0

(7)Object[] toArray();
把集合中的元素转成数组返回

(8)Iterator iterator();
返回集合中的迭代器对象

Iterator中有三个方法:

  • boolean hasNext();
    迭代过程中判断是否还有元素可迭代。

  • Object next();
    返回迭代的下一个元素

  • default void remove(); (这个方法暂时不要管它)
    从迭代器指向的集合中移除迭代器返回的最后一个元素。

测试代码:

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

public class Test01 {
    public static void main(String[] args) {
        // 创建一个集合对象
        //Collection c = new Collection();  // 这样写能行吗?显然不行,Collection是一个接口,接口无法实例化。

        // 多态,父类型引用指向子类型对象
        Collection c = new ArrayList();  // new谁都行,只要是Collection的子类就行,这里就使用ArrayList测试

        // boolean add()方法,注意:形式参数是Object型
        c.add(1500);  // 自动装箱,把1500变成Integer型,相当于Integer x = new Integer(1500); 把x存入了集合中
        c.add(3.14);  // 自动装箱,存放的是3.14这个Double类的对象内存地址
        c.add(true);
        c.add(true);  // 可以添加相同内容的对象,但存储的Boolean对象的内存地址不一样
        c.add(new Object());
        c.add(new Student(1001, "张三"));

        // int size()方法
        System.out.println(c.size());  // 6

        // void clear();
        c.clear();
        System.out.println(c.size());  // 0

        // 再添加几个元素
        c.add("hello");  // 存的是"hello"对象的内存地址
        boolean canAddSame = c.add("hello");  // 继续添加"hello",是否添加成功?
        System.out.println(canAddSame);  // true
        c.add("world");
        System.out.println(c.size());  // 3

        // boolean contains(Object o);
        System.out.println(c.contains("world"));  // true
        System.out.println(c.contains("abc"));  // false

        // boolean remove()方法
        c.remove("hello");  // 删除的是第一次加入的hello的String对象,因为ArrayList集合是有存放顺序的
        c.remove("world");
        System.out.println(c.size());  // 1

        // boolean isEmpty();
        System.out.println(c.isEmpty());  // false
        c.clear();
        System.out.println(c.isEmpty());  // true

        //Object[] toArray();
        // 我们先按照顺序向集合中添加5个元素,注意有重复的值
        c.add(1);
        c.add("hello");
        c.add("world");
        c.add(new Student(1001, "张三"));
        c.add("hello");
        // 先删除一个"hello",看会删除哪一个"hello"对象?
        c.remove("hello");
        // 转成数组
        Object[] objs = c.toArray();
        for (int i = 0; i < objs.length; i++) {
            System.out.print(objs[i].toString() + "   ");  // 1   world   1001-张三   hello
        }
        // 所以验证了ArrayList集合存放元素是有顺序的
        System.out.println();

        // Iterator<Object> iterator();
        // 获取集合的迭代器对象
        Iterator it = c.iterator();
        // 注意:此迭代方法适用于所有的集合,但是,除了Map集合之外
        while (it.hasNext()) {
            Object obj = it.next();
            System.out.print(obj + "   ");  // 1   world   1001-张三   hello
        }

    }
}

class Student {
    int id;
    String name;

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

    @Override
    public String toString() {
        return id + "-" + name;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值