当前位置: 首页 > news >正文

java day8

第8章 数据结构

  • 8.1 超越数组
  • 8.2 java数据结构
    • 8.2.1 Iterator
    • 8.2.2 位组
    • 8.2.3 链表
    • 8.2.4 遍历数据结构
    • 8.2.5 堆栈

8.1 超越数组

java类库的java.util包中有一组数据结构,它们让您能够更灵活地组织和操纵数据。

8.2 java数据结构

8.2.1 Iterator

接口Iterator提供了一种以定义好的顺序遍历一系列元素的标准方式。
来看看Iterator定义的三个方法:

  • public boolean hasNext()
  • public object next()
  • public void remove()

方法hasNext()定义了结构是否还有包含其他元素。可调用该方法来查看是否可以继续遍历结构。
方法next()获得结构中的下一个元素。如果没有更多的元素,next()将引发NoSuchElementException异常。为避免这种异常,应结合使用hasNext()和next()来确保还有元素可检索。

8.2.2 位组

使用BitSet类,可以用位来存储布尔值,而无须通过按位运算来提取位值。您只需要使用索引来引用每一位。BitSet的另一个优点是,它可以自动增大,以表示程序所需的位数。

BitSet connex = new BitSet();BitSet connex = new BitSet(4);
// 不管使用哪个构造函数,新位组中的所有位都将被初始化为falseclass ConnectionAttributes {public static final int FLEXIBLE = 3;
}connex.set(ConnectionAttributes.FLEXIBLE);
// 设置属性connex.clear(ConnectionAttributes.FLEXIBLE);
// 清除属性boolean isWriteable = connex.get(ConnectionAttributes.FLEXIBLE);
// 使用get方法来获得位组中的各个位int numBits = connex.size();
// 使用size方法可以确定位组表示了多少位

8.2.3 链表

类ArrayList是最流行的java数据结构之一,它实现了可缩放的对象数组,比数组更灵活、更有用。由于类ArrayList负责根据需要改变长度,所有它必须根据元素的增加和删除决定缩放多少。

ArrayList golfer = new ArrayList();ArrayList golfer = new ArrayList(30);
// 该构造函数创建了一个不含任何元素的默认链表golfer.add("Ko");
golfer.add(1,"kim");
// add(object)方法将元素加入到链表中String s1 = (String) golfer.get(0);
// 由于链表的索引值是从0开始的,所以第一个get()调用返回的是字符串Kogolfer.remove(3);
golfer.remove("ko");
// 删除指定位置的元素或指定的元素golfer.set(1,"Pressel");
// 上述将字符串kim替换为字符串Presselgolfer.clear();
// 可以使用clear()来删除所有的元素boolean isThere = golfer.contains("kerr");
// 检验链表是否包含指定元素int i = golfer.indexOf("ko");
// 如果链表包含指定的元素,indexOf方法将返回该元素的索引,否则返回-1.int size = golfer.size();
// 将方法size判断链表包含多少个元素golfer.trimToSize();
// 使用该方法让容量与长度相等

8.2.4 遍历数据结构

如果要依次处理链表的所有元素,可以使用方法iterator(),它返回一个Iterator,其中包含可供您遍历的元素列表

Iterator it = golfer.iterator();
// 下面的for循环使用迭代器及其方法来遍历整个链表
for (Iterator i = golfer.iterator(); i.hasNext(); ) {String name = (String) i.next();System.out.println(name);
}

8.2.5 堆栈

http://www.lryc.cn/news/59093.html

相关文章:

  • 口令暴力破解--Telnet协议暴力破解、数据库暴力破解与远程桌面暴力破解
  • [译]什么是SourceMap
  • saga模式、Seata saga模式详解
  • java开发工程师碰到技术难题怎么办?我来聊聊我的做法
  • 高比例可再生能源电力系统的调峰成本量化与分摊模型(Matlab代码实现)
  • Hive安装与操作
  • oracle centos7安装Oracle12(附oracle所有版本安装包)
  • ESP32学习二-更新Python版本(Ubuntu)
  • 【19】核心易中期刊推荐——人工智能 | 遥感信息处理
  • MySQL运维10-MySQL数据的导入导出
  • 全国计算机等级考试——二级JAVA完整大题题库【五十三道】
  • 【算法题解】24. 模拟机器人行走
  • PyTorch 深度学习实战 |用 TensorFlow 训练神经网络
  • 【进阶C语言】静态版通讯录的实现(详细讲解+全部源码)
  • 【JavaWeb】后端(Maven+SpringBoot+HTTP+Tomcat)
  • 面试官:准备了一些springboot相关的面试题,快来看看吧
  • 原子的波尔模型、能量量子化、光电效应、光谱实验、量子态、角动量
  • 【如何使用Arduino控制WS2812B可单独寻址的LED】
  • 计算机基本知识扫盲(持续更)
  • 学习大数据需要什么语言基础
  • ElasticSearch——详细看看ES集群的启动流程
  • 【教学类-30-01】5以内加法题不重复(一页两份)(包含1以内、2以内、3以内、4以内、5以内加法,抽取最大不重复数量)
  • 写博客8年与人生第一个502万
  • 【华为OD机试真题】日志采集系统(javapython)
  • epoll源码剖析
  • Linux驱动开发——高级I/O操作(一)
  • 适配器模式:C++设计模式中的瑞士军刀
  • 【三十天精通Vue 3】 第三天 Vue 3的组件详解
  • SqlServer实用系统视图,你了解多少?
  • NodeJS Cluster模块基础教程