Collection接口的常用方法

Collection接口的常用方法

Collection接口实现类的特点
public interface Collection<E> extends Iterable<E>
  • collection实现子类可以存放多个元素 每个元素可以是Object
  • 有些Collection的实现类 可以存放重复的元素 有些不可以
  • 有些Collcetion实现类 有些是有序的List 有些无序的Set
  • Collection接口没有直接的实现子类 是通过它的子类接口Set和List来实现的
{
    public static void main(String[] args) {
        List list = new ArrayList();

        //add 添加单个元素
        list.add("jack");
        list.add(10);   //本质 list.add(new Integer(10))
        list.add(true);
        System.out.println("list="+list);

        //remove删除指定元素
       // list.remove(0); //下标
        list.remove(true); //指定删除某个元素
        System.out.println("list="+list);

        //contains 查找元素是否存在
        System.out.println(list.contains("jack"));

        //size 获取元素个数
        System.out.println(list.size());

        //isEmpty 判断是否为空
        System.out.println(list.isEmpty());

        //clear 清空
        list.clear();
        System.out.println("list="+list);

        //addAll 添加多个元素
        ArrayList list2 = new ArrayList();
        list2.add("红楼梦");
        list2.add("三国");
        list.addAll(list2);
        System.out.println("list="+list);

        //containsAll 查找多个元素是否存在
        System.out.println(list.containsAll(list2));


        list.add("聊斋");
        //removeAll 删除多个元素
        list.removeAll(list2);
        System.out.println("list="+list);
    }
}

Collection接口遍历元素方式1–使用Iterator迭代器

  • Iterator对象称为迭代器 主要用于遍历Collection集合中的元素
  • 所有实现了Collection接口的集合类都有一个iterator()方法 用以返回一个实现了Iterator接口的对象 即可以返回一个迭代器
  • Iterator仅用于遍历集合 Iterator本身并不存放对象
迭代器执行原理
Iterator iterator = col.iterator();
  • 得到一个集合的迭代器
  • hasNext() 判断是否还有下一个元素
  • next()作用下移
  • 在调用it.next()方法之前必须调用it.hasNext()进行检测 若不调用 且下一条记录无效 it.next()会抛异常
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("小李飞刀","古龙",5.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));

        System.out.println("col="+col);
        //希望遍历col集合
        //1 先得到col对应迭代器
        Iterator iterator = col.iterator();
        //2 使用while循环遍历
        while (iterator.hasNext()){ //是否还有数据
            //返回下一个元素类型是object
            Object obj = iterator.next();
            System.out.println("obj="+obj);
        }
  • 当退出while循环后 这时iterator迭代器指向最后的元素 如果再调用iterator.next() 则会抛异常
  • 如果希望再次遍历 需要重置迭代器
iterator=col.iterator();

Collection接口遍历对象方式2-for循环增强

  • 增强for循环 可以代替iterator迭代器
  • 特点 增强for就是简化版的iterator 本质一样 只能用于遍历集合或数组
        Collection col = new ArrayList();

        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("小李飞刀","古龙",5.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));

        //1使用增强for 在Collection集合
        //2 增强for 底层仍然是迭代器
        //3 增强for 可以理解为简化版的迭代器遍历
        for(Object book:col){
            System.out.println("book="+book);
        }

        //增强for也可以用在数组上
        int[] nums={1,8,10,90};
        for (int i :nums){
            System.out.println("i="+i);
        }

练习

 Dog d1 = new Dog("小黑", 5);
        Dog d2 = new Dog("小白", 6);
        Dog d3 = new Dog("小黄", 4);

        List list = new ArrayList();

        list.add(d1);
        list.add(d2);
        list.add(d3);

        Iterator iterator = list.iterator();

        while(iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println("obj="+obj);
        }

        System.out.println("==========");

        for (Object o : list) {
            System.out.println("o="+o);
        }

线程安全

对于List: 可以使用Vector,工具类Collections. synchronizedList()方法,但推荐: CopyOnWriteArrayList。

对于Set: 使用CopyOnWriteArraySet。

对于Map: 使用ConcurrentHashMap hashTable是线程安全的 hashMap是线程不安全的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值