集合-Collection和Iterate接口

java集合
通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。
Java集合类存放在java.util包中,是一个用来存放对象的容器。

注意:

1.集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。

2.集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。

3.集合可以存放不同类型,不限数量的数据类型。
Collection接口
Collection接口是List, Set, Queue的父接口,该接口里定义的方法既可以用于Set集合,也可以用于操作List, Queue集合。Collection接口里定义了如下操作集合元素的方法:

boolean add(Object o):向集合里添加一个元素,若添加成功则返回true
boolean addAll(Collection c):把集合c里所有元素添加到指定集合内
void clear():清空集合内所有元素
boolean contains(Object o):判断集合里书否包含指定元素o
boolean containsAll(Collection c):判断集合里是否包含集合c中所有元素
boolean isEmpty():返回集合是否为空
boolean remove(Object o):删除集合中指定元素o,当集合中包含了多个o时都将被删除,删除成功返回true
int size():返回集合中元素个数
Object[] toArray():将集合转换成一个数组,所有集合中元素变成对应的数组元素
Iterator iterator():返回一个Iterator对象用于遍历集合里的元素

public class Collection {
    public static void main(String[] args) {
        var c = new ArrayList();
        c.add("孙悟空");
        c.add(6);
        System.out.println(c.size());
        c.remove(6);
        System.out.println(c.size());
        System.out.println(c.contains("孙悟空"));
        c.add("111");
        System.out.println(c);
        var books = new HashMap();
        books.add("456");
        books.add("789");
        System.out.println(c.contains(books));
        c.remove(books);
        c.clear();
        System.out.println(c);
        books.retainAll(c);
        System.out.println(books);

    }
}

上面创建了两个Collection对象,一个是c集合,一个是books集合,其中c集合ArrayList,而books集合是HashSet.虽然他们使用的实现类不同,但当把他们当成Collection来使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
使用Iterator接口遍历集合
Iterator用于遍历Collection集合中的元素,Iterator对象也被称为迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,定义了如下三个方法:

boolean hasNext():如果集合还有元素未被遍历则返回true,若已遍历完集合内所有元素则返回false
Object next():返回集合中的下一个元素
void remove():删除集合中上一次next方法返回的元素

public class TestIterator {
    public static void main(String[] args)
    {
        HashSet books = new HashSet();
        books.add("Java疯狂笔记");
        books.add("代码整洁之道");
        books.add("秃头");
        // 获取books集合对应的迭代器
        Iterator it = books.iterator();
        while(it.hasNext())
        {
            String book = (String)it.next();
            System.out.println(book);
            if(book == "秃头")
                it.remove();  // 删除"秃头”这个元素
        }
        System.out.println(books);  // [Java疯狂笔记, 代码整洁之道]
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值