集合之集合框架、Collection

集合

集合:用来存储java类的对象,像是一个容器;在集合中,我们用泛型使集合更加安全

动态保存任意多个类型的多个对象;提供了一些方便的操作方法;

  • 集合与数组的异同点:

    • 数组长度固定,集合一般可变

    • 数组存储元素类型单一,并且可以存储基本数据类型值;集合可以存储多种类型,但只可存储引用类型

    • 数组方法单一,集合提供了大量的方法

    • 数组的数据存储特点单一(有序有索引元素可重复),集合来说,不同的集合类型特点多样

集合框架

  • 集合主要是两组

    • Collection,单列集合,接口有两个重要的子接口,List和Set,它们的实现子类都是单列集合

    • Map,双列集合,接口的实现子类,存放的K-V键值对

Collection

  • Iterator<E>

  • boolean add( E e):确保此集合包含指定的元素(可选操作);添加成功返回true,添加失败返回false

  • boolean hasNext();下一个不为空,返回true;

  • E next();返回迭代的下一个元素;

Collection接口没有直接的实现子类,借用Arraylist类演示方法


Collection接口实现类的特点

(public interface Collection<E>extends Iterable<E>

  1. collection实现子类可以存放多个元素,每个元素可以是Object

  2. 有些Collection的实现类,可以存放重复元素(List),有些不可以(Set);

  3. 有些Collection的实现类,有些是有序的(List),有些是无序的(Set);

  4. Collection接口没有直接的实现子类,是通过它的子接口List和Set来实现的;

  • add:添加单个元素;添加基本数据类型时,会自动装箱,成为包装对象

  • remove():删除指定元素;可删除指定对象、索引处对象

  • contains():查找元素是否存在;存在返回true,不存在返回false

  • size():获取元素个数;

  • isEmpty():判断是否为空;空返回true,有元素返回false

  • clear():清空;清空集合

  • addAll(Collection<?> c):添加集合c到集合中,;可添加多个元素、或一个集合(也是集合中的元素)

  • containsAll():查找多个元素是否都存在;查找元素或集合(也是集合中的元素)

  • removeAll(Collection<?> c):删除集合中c包含中的元素,;删除元素、或集合(也是集合中的元素)

  • retainAll(Collection<?> c):保留集合中与集合c重复的元素;

  • toArray():返回一个包含此集合中所有元素的数组。;


Collection接口遍历元素方式

方式1:使用Iterator(迭代器

  1. Iterator对象称为迭代器,主要用于遍历Collection接口中的元素;

  2. Iterator也是一种集合,但不用于存储,用于遍历集合元素值

  3. 单列集合的顶级父接口Collection继承了Iterable,在Iterable接口中定义了一个抽象方法iterator(),调用集合的iterator()方法,返回一个实现了Iterator接口的对象,即可以返回一个迭代器;

  4. Iterator的结构:从头至尾,依次返回(取出)对应位置的元素,每次下移前调用iterator.hasNext()判断是否还有下一个元素(while);如果不判断,取出不存在元素,报异常:NoSuchElementException

  5. 指针初始位置在-1;

public static void main(String[] args) {
       ArrayList list = new ArrayList();//集合实现类
       //添加集合元素,对象类Book代码省略未粘贴
       list.add(new Book("三国演义","罗贯中",52.4));
       list.add(new Book("西游记","吴承恩",56.2));
       list.add(new Book("水浒传","施耐庵",85.1));

       //遍历list元素
       Iterator iterator = list.iterator();//1、得到list对应的迭代器
       //2、使用while循环遍历,快捷键itit
       while (iterator.hasNext()) {//判断下一个是否还有数据
           Object next =  iterator.next();//有,返回下一个元素,类型是Object
           System.out.println(next);//输出每个元素,默认调用toString,Book中已重写
      }
  }
  • 当退出while循环后,此时iterator迭代器指向最后一个元素,如果再次运行iterator.next();,就会报错:NoSuchElementException

  • 如果希望再次遍历,需要重置(即赋值)我们的迭代器iterator = list.iterator();

方式2:增强for循环

在JDK1.5之后,对迭代器进行优化:可以使用foreach代替迭代器遍历,即简化版的iterator,本质一样。只能用来遍历集合和数组。

增强for循环的底层仍旧是iterator;快捷键:iter

基本语法:

/*for(元素类型  元素变量名 :集合名或数组名){
访问元素}
*/
 
posted @   许多多被注册了  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示