| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【Java集合框架】常用工具类之重点 -> 正文阅读 |
|
[Java知识库]【Java集合框架】常用工具类之重点 |
前言首先要说这个集合框架,在Java中使用时特别重要而且具有一定的难度(涉及到数据结构),后期做项目时也是常用到的一个工具,各位可以上点心。 初识集合框架了解集合框架通常,我们的程序在程序运行时才能知道创建多少个对象。在程序未运行时,程序开发阶段,我们根本不知道到底需要多少数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 因为Java是面向对象的一门语言所以集合框架也需要被实例化为对象,Java集合类存放于 java.util 包中,是一个用来存放对象的容器。使用之前需要导入。 那我们在什么时候应该用集合框架呢?
集合框架有以下几点需要注意:
如果不知道包装类大家可以去看看 Java常用工具类之包装类与字符串 集合框架与数组乍一看,集合与数组十分相似,但其实不然,我们接下来看一下集合与数组的区别 可见集合与数组之间不同之处还是很明显的! 集合框架分类集合整体框架图是非常的复杂的,我们先来看看一张来自网络的图: Java 集合框架主要包括两种容器类型,一种是集合(Collection),主要用来储存一类元素的集合。另一种是图(Map),用来存储键值对映射。Collection 接口又有主要有 3 种接口,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、HashMap 等等。具体实现类不止这些但是我们先说这些当中最重要的几个。 集合框架实现顺序:
下面是它们的简单关系图: Collection
Collection 接口存储一组不唯一,无序的对象。 下面是Collection常用的一些方法:
不是说接口不能被实例化吗?那我们怎么使用Collection的方法呢? 当然一个接口是无法被实例化的,但是我们已经学习过多态了啊,我们可以创建一个父类的引用指向子类的实例化,这样就可以使用它自身的方法了。如:
这里要注意因为集合中只能存放对象,不能存放基本数据类型,所以我们这里使用的是int的包装类Integer类型来声明的。 List
List 接口存储一组不唯一,有序(插入顺序)的对象。 List的常用方法:
方法使用很简单,创建对象就可以直接引用了,与Collection类似,只不过增加了有序属性而已,就不演示了。。。 ArrayList该类实现的是Collection接口的子接口List的接口,实现了可变大小的数组(动态),随机访问和遍历元素时,提供更好的性能。底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。ArrayList 类位于 java.util 包中,使用前需要引入它。 ArrayList特点:
ArrayList的构造方法:
这里的 至于它的其他方法都是从接口过来的,就不需要说了,下面也是一样实现类的方法就不举例子说明了。 LinkedList该类实现的是Collection接口的子接口List和Queue接口。Queue这个结构我们后面在讲,今天不具体说。主要用于创建链表数据结构,查找效率低。LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。
LinkedList的构造方法:
Set
Set 接口存储一组唯一,无序的对象。 Set与List都是继承于Collection的接口,那么Set与List有什么不同之处呢?总结如下:
可以看出来他们有各自的优缺点,当我们在选择时候应该根据他们特点来选择适合我们当前需求的一种结构。 Set的常用方法:
HashSet该类实现的是Collection接口的子接口Set的接口,不允许出现重复元素,不保证集合中元素的顺序。HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。
至于关于重写hashCode()和equals()方法,保证元素唯一性这个比较繁琐而且比较重要,今天先简单了解一下,后面我们会对它们的方法以及重要的东西在来说一遍的。 Map
一般来说Map的key是不容许重复的,如果key重复了也不会报错,但是同一个 key 所对应的值只有一个,就是最后你更新这个 key 的值。这样的话对我们的数据处理不友好,所以我们在一个Map里面的key一般都是独一无二的。 下面是图(Map)常用的一些方法:
Map方法的使用与Collection也是类似的唯一不同之处就是声明类型的时候,需要声明两个类型,即:K—V。如下:
其他方法也是类似的,就不一一演示了。 HashMapHashMap 是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。
HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。HashMap 类位于 java.util 包中,使用前需要引入它。 迭代器 Iterable大家可能没有注意上面所有的集合类都实现了 Iterable 接口,那Iterable是什么玩意呢?
一般我们遍历一个集合可能用循环的方法实现,这是可以的,但是对于集合还有一种特殊的方法就是使用迭代器。迭代器是一个个具体对象,只不过它实现了 Iterator 接口和 ListIterator 接口。使用了迭代器,能够通过循环来得到或删除集合的元素。 其中Iterator 是 Java 迭代器最简单的实现,而ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口,ListIterator 继承了 Iterator,以允许双向遍历列表和修改元素,是Iterable的进化版。 迭代器的基本操作是 next 、hasNext 和 remove:
具体使用如下:
输出为: 这里需要注意顺序,是因为我 其他方法用法也是类似的就不一一说明了。 有错误请指正,在此提前感谢! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:16:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |