JavaApi高级编程(五)集合框架中Iterate迭代器的使用以及解析

简介: JavaApi高级编程(五)集合框架中Iterate迭代器的使用以及解析

一、集合框架的概念


1、集合框架实际上就是一个动态的数组,与一般的对象数组不同,集合中的对象内容可以任意扩充


2、集合框架的特点:


       A、这种框架是高性能的


       B、框架必须允许不同的类型的类集以相同的方式和高度互操作方式工作


       C、类集必须是容易扩展和修改的


3、对象数组中必须包含一组对象,但是对象数组使用的时候存在一个长度的限制,那么集合框架是专门解决这种限制的,使用集合框架可以方便地向数组中增加任意多个数据。


4、对象数组的操作中基本上都要保证对象类型的一致性,对于类集而言本身其内部的元素也应该保持一致,不管是何种类型的数据,所有的操作方式都应该是一样的


5、集合框架中的常用接口概述:


       A、Collection 接口存储一组不唯一,无序的对象


       B、List 接口存储一组不唯一,有序(插入顺序)的对象


       C、Set 接口存储一组唯一,无序的对象


二、List接口


1、ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高


2、LinkedList采用链表存储方式。插入、删除元素时效率比较高


问题:存储多条狗狗信息,获取狗狗总数,逐条打印出各条狗狗信息

public class Test1 {
  public static void main(String[] args) {
  Dog ououDog = new Dog("欧欧", "雪娜瑞");
  Dog yayaDog = new Dog("亚亚", "拉布拉多");
  Dog meimeiDog = new Dog("美美", "雪娜瑞");
  Dog feifeiDog = new Dog("菲菲", "拉布拉多");  
  List dogs = new ArrayList();
  dogs.add(ououDog);
  dogs.add(yayaDog);
  dogs.add(meimeiDog);
  dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置  
  System.out.println("共计有" + dogs.size() + "条狗狗。");
  System.out.println("分别是:");
  for (int i = 0; i < dogs.size(); i++) {
    Dog dog = (Dog) dogs.get(i);
    System.out.println(dog.getName() + "\t"+ dog.getStrain());
  }
  }
}

分析:通过List接口的实现类ArrayList实现该需求


       元素个数不确定


       要求获得元素的实际个数


       按照存储顺序获取并打印元素信息


问题:扩充以下几部分功能 删除指定位置的狗狗,如第一个狗狗 删除指定的狗狗,如删除feifeiDog对象 判断集合中是否包含指定狗狗

public class Test2 {
  public static void main(String[] args) {
  // 1、创建多个狗狗对象
  // 2、创建ArrayList集合对象并把多个狗狗对象放入其中
  System.out.println("删除之前共计有" +dogs.size() + "条狗狗。");
  dogs.remove(0);
  dogs.remove(feifeiDog);
  System.out.println("\n删除之后还有" + dogs.size() + "条狗狗。");
  if(dogs.contains(meimeiDog))
    System.out.println("\n集合中包含美美的信息");
  else
    System.out.println("\n集合中不包含美美的信息");
  }
}


分析:List接口提供相应方法remove()、contains(),直接使用即可


List接口常用方法:

LinkedList的特殊方法


拓展:

迭代器 it 的两个基本操作是 next 、hasNext 和 remove。


调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。


调用 it.hasNext() 用于检测集合中是否还有元素。


调用 it.remove() 将迭代器返回的元素删除。

相关文章
|
24天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
24天前
|
算法 Linux C++
【Linux系统编程】深入解析Linux中read函数的错误场景
【Linux系统编程】深入解析Linux中read函数的错误场景
196 0
|
29天前
|
Shell Linux 开发工具
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
【Shell 命令集合 文件管理】Linux 高级的文件管理器 mc 命令解析
38 0
|
25天前
|
机器学习/深度学习 算法 编译器
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
46 0
|
25天前
|
存储 JSON 安全
【C++ 泛型编程 综合篇】泛型编程深度解析:C++中的五种类型泛型策略综合对比
【C++ 泛型编程 综合篇】泛型编程深度解析:C++中的五种类型泛型策略综合对比
65 1
|
25天前
|
设计模式 算法 数据安全/隐私保护
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
25 0
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
|
25天前
|
存储 算法 编译器
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(一)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
35 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
6天前
|
SQL API 数据库
Python中的SQLAlchemy框架:深度解析与实战应用
【4月更文挑战第13天】在Python的众多ORM(对象关系映射)框架中,SQLAlchemy以其功能强大、灵活性和易扩展性脱颖而出,成为许多开发者首选的数据库操作工具。本文将深入探讨SQLAlchemy的核心概念、功能特点以及实战应用,帮助读者更好地理解和使用这一框架。
|
7天前
|
Java 数据库 Spring
切面编程的艺术:Spring动态代理解析与实战
切面编程的艺术:Spring动态代理解析与实战
23 0
切面编程的艺术:Spring动态代理解析与实战

推荐镜像

更多