java集合框架--Collection

容器(Collection)是什么?

容器(Collection)是容纳数据用的。Java的容器(Collection)可以装一组对象。既然是一组对象,那么他们就应该可以被遍历(traverse)。

可以被遍历的数据是可以被迭代的(Iterable)。可以被迭代的数据,就可以使用for循环进行迭代。

实现Iterable接口

可以被迭代的数据需要实现Iterable接口,而Iterable内部需要实现一个迭代器。下面这段程序,教你实现一个产生随机字符串的迭代器。第1遍理解它的时候建议你跟着我的视频一起将这段程序一行一行的敲出来,我会给你line-by-line解答。

public class RandomStringGenerator<T> implements Iterable<T> {
   

    private final List<T> list;

    public RandomStringGenerator(List<T> list) {
   
        this.list = list;
    }

    @Override
    public Iterator<T> iterator() {
   

        return new Iterator<T>() {
   
            @Override
            public boolean hasNext() {
   
                return true;
            }

            @Override
            public T next() {
   
                return list.get((int) (list.size() * Math.random()));
            }
        };
    }


    public static void main(String[] argv) {
   
        var list = Arrays.asList("List", "Tree", "Array");
        var gen = new RandomStringGenerator<String>(list);

        for(var s: gen) {
   
            System.out.println(s);
        }
        
//        var it = gen.iterator();
//        for(int i = 0; i < 100; i++) {
   
//            System.out.println(it.next());
//        }
    }

}


容器(Collection)接口

容器都是可以被迭代的。ArrayList、LinkedList、TreeSet、HashSet、PriorityQueue、Stack都是容器, 都可以被迭代,都可以使用for循环,直接遍历。

当然,结合不仅仅需要被迭代。比如我们会:

  • 判断一个容器是不是空的isEmpty()方法
  • 想知道容器的大小size()方法
  • 想知道容器中有没有某个元素contains(object)。
  • 将容器转化成数组toArray()方法 添加元素到容器add(E e)方法
  • 从容器中移除一个元素remove(object) 方法
  • 判断一个容器的元素是否在这个容器当中containsAll(Collection<? extends T> c)
  • 从容器中移除一个容器的元素removeAll(Collection<?> c)
  • 移除不在某个容器中的元素retainAll(Collection<?> c) 清空这个容器clear()

很多实现容器的数据结构。并不是直接实现Collection,而是再抽象出中间的接口。比如ArrayList的继承如下

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializ
    
    
public interface List<E> ext
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值