collection
Posted qianyue59476
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了collection相关的知识,希望对你有一定的参考价值。
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:
public boolean add(E e)
: 把给定的对象添加到当前集合中 。public void clear()
:清空集合中所有的元素。public boolean remove(E e)
: 把给定的对象在当前集合中删除。public boolean contains(E e)
: 判断当前集合中是否包含给定的对象。public boolean isEmpty()
: 判断当前集合是否为空。public int size()
: 返回集合中元素的个数。public Object[] toArray()
: 把集合中的元素,存储到数组中。
迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
Iterator接口的常用方法如下:
public E next()
:返回迭代的下一个元素。public boolean hasNext()
:如果仍有元素可以迭代,则返回 true。
迭代器的实现原理:
在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。
增强for循环(也称for each循环)是jdk1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。
Collection虽然可以存储各种对象,但实际上通常Collection只存储同一类型对象。例如都是存储字符串对象。因此在JDK5之后,新增了泛型语法,让你在设计API时可以指定类或方法支持泛型,这样我们使用API的时候也变得更为简洁,并得到了编译时期的语法检查。
含有泛型的方法
定义格式:
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
使用格式:调用方法,确定泛型的类型
含有泛型的接口
定义格式:
修饰符 interface接口名<代表泛型的变量> { }
1、定义类是确定泛型的类型
2、始终不确定泛型的类型,直到创建对象时,确定泛型的类型。
泛型通配符:
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
通配符基本使用
泛型通配符:不知道使用什么类型类接收的时候,此时可以使用?,?表示未知通配符。
此时只能接收数据,不能往该集合中存储数据。
通配符高级使用--受限泛型
之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置,但是在JAVA的泛型中可以指定一个泛型的上限和下限。
泛型的上限
格式:`类型名称 <? extends 类 > 对象名称`
意义:只能接收该类型及其子类
泛型的下限
格式:`类型名称 <? super 类 > 对象名称`
意义:`只能接收该类型及其父类型`
以上是关于collection的主要内容,如果未能解决你的问题,请参考以下文章
从 Fragment 返回时,Flow onEach/collect 被多次调用
java8 .stream().sorted().filter().map().collect()用法