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的主要内容,如果未能解决你的问题,请参考以下文章

推荐net开发cad入门阅读代码片段

从 Fragment 返回时,Flow onEach/collect 被多次调用

java8 .stream().sorted().filter().map().collect()用法

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

ktor HTTP API 练习

线程同步-使用ReaderWriterLockSlim类