文章目录

  • 前言(转载请说明作者:极客BOY)
  • 任务导引
  • List接口
    • 特点
    • 如何使用
      • ArrayList
      • LinkedList
    • List排序

前言(转载请说明作者:极客BOY)

  • 2020.5.14

    发布

任务导引

开发一款电话号码管理程序,具有电话号码的添加、删除、修改和查询的功能。

List接口

特点

  • 有序的

    有序并不是排好了序,而是按照素放进去的顺序读取,并不是散乱的排布。

  • 可重复的

    允许有相同的元素存在。

如何使用

我们知道,接口不能被实例化,所以,我们需要它的子类,根据 List的子类来实例化

下面介绍的是List接口的实现子类

ArrayList

ArrayList即数组实现

ArrayList使用数组作为实现结构,但是元素个数不受限制,是大小可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率高,但是任何不在结尾处增加元素或删除元素的操作都会引起大量元素的移位

e.g.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class ArrayListDemo1 {public static void main(String[] args) {// 建立列表,默认元素数:10List<String> list = new ArrayList<String>();System.out.println("添加元素……");// 在末尾添加list.add("BASIC");list.add("C");list.add("Python");list.add("Java");System.out.println("在2下标前插入");list.add(2, "C++");System.out.println(list);list.set(0, "Ada");System.out.println(list.get(3));System.out.println("用下标遍历列表:");for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");}}
}

LinkedList

LinkedList即链表,采用链式存储结构, 插入、删除元素时不会引起大量元素的移动,效率高。它专门提供了对尾部和头部添加和删除的操作方法,而且效率很高。

e.g. 在头尾添加字符串

import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {LinkedList<String> list = new LinkedList<String>();System.out.println("添加元素……");list.add("BASIC");list.add("C");list.addFirst("Python");list.addLast("Java");System.out.println("链表头:" + list.getFirst() + "\n链表尾:" + list.getLast());for (String string : list) {System.out.println(string);}}}

List排序

按照你的想法,你认为排序方法可能在List接口中有这个方法,但是事实并没有。

但我们可以注意到下图的Java集合框架图结构图中可以看到右下角有个Utilities

它里面包含了sort方法,可以进行排序,前提是List集合中包含的数据类型中,是实现Comparable的类的实例。

Java集合框架——一个编程小白的Java SE学习日志11【极客BOY-米奇】相关推荐

  1. java集合框架源代码_面试必备——Java集合框架

    Java集合框架面试题 常见集合 集合可以看作是一种容器,用来存储对象信息. 数组和集合的区别: (1)数组长度不可变化而且无法保存具有映射关系的数据:集合类用于保存数量不确定的数据,以及保存具有映射 ...

  2. 一个编程小白的Java SE学习日志 Ⅵ——继承【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)3.25~3.29编写 自我问答 任务导引:电子宠物Beta 任务UML图 继承 什么是继承? 如何实现继承? 案例 子类可以继承父类所有的成员和方法? 继承的特点 ...

  3. java集合框架支持三种类型,Java集合框架(一)

    集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference) 集合类型主要有3种:set(集).lis ...

  4. 一个编程小白的Java SE学习日志 Ⅸ—— 图形界面GUI【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)4.22~4.26编写 目标 任务导引:收银系统 分析 图形界面概述 包 java.awt包 java.swing包※ 如何创建用户图形界面 创建容器 如何构造JFr ...

  5. 一个编程小白的Java SE学习日志 V——类、对象【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)3.18~3.25编写 观看前自问 面向对象实现过程 面向对象三大特性 封装 继承 多态 如何理解类与对象(实例)的关系? 现实理解 如何理解对象? 现实理解 任务导 ...

  6. 一个编程小白的Java SE学习日志 X—— 输入输出(IO)流【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)4.30~5.7编写 File类 File类的构造方法 File类常用方法 File类的一些常用方法实例 IO流 IO流的分类 按数据流的方向分类 按是否直接操作源或 ...

  7. 一个编程小白的Java SE学习日志 Ⅷ——接口、异常【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)4.9~4.16编写 接口 概念 定义 实现 使用场合 设计模式 适配器设计模式 简单工厂设计模式 异常 Java如何处理异常 使用try..catch结构捕获异常 ...

  8. Java集合框架使用总结

    Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看JavaAPI文档. 一.概述 数 ...

  9. Java集合框架:总结

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. 常用API(Object、String、StringBuffer、用户登陆注册)
  2. python3 的乐趣进度条
  3. Linux读写执行(RWX)权限
  4. 机器学习笔记(part1)--Frobenius范数与迹运算
  5. [UE4]C++中extern关键字浅谈
  6. xftp怎么有root权限_许多人都不懂的Linux系统里的特殊权限!!你真的了解嘛?...
  7. 某角数卡发卡网程序V1.7.1版本开源源码
  8. numpy.arange语法,作用以及举例
  9. java 文件 填空题_Java作业之填空题.doc
  10. php 中文字符串长度_php中计算中文字符串长度、截取中文字符串的函数代码
  11. android自动悬浮窗代码,三行代码实现Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商...
  12. w10打游戏老是弹出计算机,有效解决win10玩游戏弹出输入法的问题
  13. Cesium雷达放射波
  14. 计算机专业选择加州的哪些大学留学,学计算机科学专业,必选硅谷附近的加州大学!...
  15. This is a CONNECT tunnel, through which encrypted HTTPS traffic flows.
  16. AutoK3s v0.4.8 发布 与 Harvester 梦幻联动
  17. MySQL Flashback拯救手抖党
  18. 微信聊天记录迁移及故障修复
  19. 永州科技学院有计算机专业吗,湖南永州市科技学院
  20. offer收割机: 字节跳动、YY、虎牙、BIGO

热门文章

  1. 自己对“为什么不同挂载点的inode号码都是2”的理解
  2. COM与套间(Apartment)之我见
  3. Python微信操控(itchat)
  4. java jsp验证码_JSP验证码简单生成方法
  5. apt-get 自动补全包名
  6. java中printnb方法_vue-print-nb 打印插件的使用
  7. C++ STL::list常用操作及底层实现(中1)——实现list常用操作之插入(insert、push_front、push_back、splice)
  8. cpp iconv 字符集转换函数
  9. 到底是谁在流氓和无耻
  10. 超小封装体积8点/八段液体水位检测专用触控芯片VK36W8I