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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 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() 将迭代器返回的元素删除。

相关文章
|
17天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
16天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
1月前
|
缓存 Java 调度
多线程编程核心:上下文切换深度解析
在现代计算机系统中,多线程编程已成为提高程序性能和响应速度的关键技术。然而,多线程编程中一个不可避免的概念就是上下文切换(Context Switching)。本文将深入探讨上下文切换的概念、原因、影响以及优化策略,帮助你在工作和学习中深入理解这一技术干货。
50 10
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
53 8
|
1月前
|
算法 调度 开发者
多线程编程核心:上下文切换深度解析
在多线程编程中,上下文切换是一个至关重要的概念,它直接影响到程序的性能和响应速度。本文将深入探讨上下文切换的含义、原因、影响以及如何优化,帮助你在工作和学习中更好地理解和应用多线程技术。
45 4
|
2月前
|
存储 缓存 开发者
Python编程中的装饰器深度解析
本文将深入探讨Python语言的装饰器概念,通过实际代码示例展示如何创建和应用装饰器,并分析其背后的原理和作用。我们将从基础定义出发,逐步引导读者理解装饰器的高级用法,包括带参数的装饰器、多层装饰器以及装饰器与类方法的结合使用。文章旨在帮助初学者掌握这一强大工具,同时为有经验的开发者提供更深层次的理解和应用。
43 7
|
2月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
2月前
|
安全 程序员 API
|
2月前
|
存储 设计模式 分布式计算
Java中的多线程编程:并发与并行的深度解析####
在当今软件开发领域,多线程编程已成为提升应用性能、响应速度及资源利用率的关键手段之一。本文将深入探讨Java平台上的多线程机制,从基础概念到高级应用,全面解析并发与并行编程的核心理念、实现方式及其在实际项目中的应用策略。不同于常规摘要的简洁概述,本文旨在通过详尽的技术剖析,为读者构建一个系统化的多线程知识框架,辅以生动实例,让抽象概念具体化,复杂问题简单化。 ####
|
2月前
|
设计模式 安全 Java
Java编程中的单例模式深入解析
【10月更文挑战第31天】在编程世界中,设计模式就像是建筑中的蓝图,它们定义了解决常见问题的最佳实践。本文将通过浅显易懂的语言带你深入了解Java中广泛应用的单例模式,并展示如何实现它。

推荐镜像

更多