Java18-java语法基础——集合框架
Java18-java语法基础——集合框架
一、什么是集合框架
1、集合框架:是为表示和操作集合而规定的一种统一的、标准的体系结构。
2、任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
(1)接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。
(2)实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。
(3)算法:在一个实现了某个集合框架中的接口的对象上,完成某种有用的计算的方法,例如查找、排序等。
二、集合框架的好处
1、提高程序设计效率。
2、提高程序速度和质量。集合框架通过提供对有用的数据结构和算法的高性能和高质量的实现使你的程序速度和质量得到提高。
3、集合框架鼓励软件的复用。对于遵照标准集合框架接口的新的数据结构是可复用的。
三、Java集合框架包含的内容
接口 |
collection |
Map |
||||
List |
set |
|||||
接口特点 |
元素可以重复,有序的(插入顺序有序),长度可变 |
元素不可以重复,无序的 |
无序的,以key-value的方式存放数据 |
|||
具体类 |
ArrayList |
LinkedList |
HashSet |
TreeSet |
HashMap |
TreeMap |
动态数组,底层由数组实现 |
动态链表,底层由链表实现 |
|||||
优缺点 |
遍历和随机访问效率高 |
插入删除效率高 |
||||
常用方法 |
1)put(key,value) 2)keySet() 3)values() |
|||||
算法 |
1、Collections提供了对集合进行排序、遍历等多种算法实现; 2、Java集合框架为我们提供了一套性能优良、使用方便的接口和类,它们位于java.util包中; 3、我们不必再重新发明轮子,只需学会如何使用它们,就可处理实际应用中问题。 |
四、List接口的实现类:ArrayList、LinkedList
1、ArrayList类
(1)定义:
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。
(2)常用方法(继承List接口)
方法名 |
说 明 |
boolean add(Object o) |
在列表的末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o) |
在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间 |
int size() |
返回列表中的元素个数 |
Object get(int index) |
返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) |
判断列表中是否存在指定元素 |
boolean remove(Object o) |
从列表中删除元素 |
Object remove(int index) |
从列表中删除指定位置元素,起始索引位置从0开始 |
2、LinkedList类
(1)定义:LinkedList采用链表存储方式。插入、删除元素时效率比较高。
(2)LinkedList集合类的特殊方法
方法名 |
说 明 |
void addFirst(Object o) |
在列表的首部添加元素 |
void addLast(Object o) |
在列表的末尾添加元素 |
Object getFirst() |
返回列表中的第一个元素 |
Object getLast() |
返回列表中的最后一个元素 |
Object removeFirst() |
删除并返回列表中的第一个元素 |
Object removeLast() |
删除并返回列表中的最后一个元素 |
五、Map接口
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作。
最常用的是HashMap。
实现类HashMap
(1)定义:
Map countries = new HashMap();
(2)常用方法:
方法名 |
说 明 |
Object put(Object key, Object val) |
以“键-值对”的方式进行存储 |
Object get (Object key) |
根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove (Object key) |
删除由指定的键映射的“键-值对” |
int size() |
返回元素个数 |
Set keySet () |
返回键的集合 |
Collection values () |
返回值的集合 |
boolean containsKey (Object key) |
如果存在由指定的键映射的“键-值对”,返回true |
六、集合类对比
1、Vector和ArrayList的异同
实现原理相同,功能相同,很多情况下可以互用
两者的主要区别如下:
(1)Vector线程安全,ArrayList重速度轻安全,线程非安全;
(2)长度需增长时,Vector默认增长一倍,ArrayList增长50%。
2、Hashtable和HashMap的异同
实现原理相同,功能相同,在很多情况下可以互用
两者的主要区别如下:
(1)Hashtable继承Dictionary类,HashMap实现Map接口
(2)Hashtable线程安全,HashMap线程非安全
(3)Hashtable不允许null值,HashMap允许null值
七、迭代器:遍历List集合
方法1:通过for循环和get()方法配合实现遍历
方法2:通过迭代器Iterator实现遍历
所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历;
Collection 接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历;
迭代器的两个方法:
boolean hasNext(): 判断是否存在另一个可访问的元素
Object next(): 返回要访问的下一个元素
示例:
//定义Student对象stu的迭代器it
Iterator<Student> it = stu.iterator();
while(it.hasNext()){ //判断迭代器中是否还有下一个元素
Student temp = it.next(); //获取下一个元素
System.out.println(temp); //输出
}
八、泛型集合
Java18-java语法基础——集合框架的更多相关文章
- Java中的集合框架(上)
Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...
- Java语法基础(1)
Java语法基础(1) 1. Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- 第51节:Java当中的集合框架Map
简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...
- 第48节:Java当中的集合框架
Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java当中的集合框架Map
简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...
随机推荐
- Python shelve 模块
使用json或者pickle持久化数据,能dump多次,但load的话只能取到最新的dump, 因为先前的数据已经被后面dump的数据覆盖掉了. 如果想要实现dump多次不被覆盖,就可以想到使用she ...
- mysql下载以及安装
因为xampp怎么都连接不上mysql,我感觉有可能是因为装mysql的时候试了很多次才安装成功,之前的mysql没有卸载干净造成的,今天把mysql卸载干净,又重新安装配置环境,但是还是连接不上,然 ...
- SQL 查询当天,本月,本周的记录
SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDE ...
- 学习笔记之Linux / Shell / QSHELL
shell(计算机壳层)_百度百科 http://baike.baidu.com/subview/849/15831672.htm Shell (computing) - Wikipedia, the ...
- 使用docker compose编排容器
一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...
- 八(第一篇)、主体结构元素——article元素、section元素
article元素 article元素代表文档.页面或应用程序中独立的.完整的.可以独自被外部引用的内容. 他可以是一篇博客或者报刊中的文章,一篇轮胎帖子.一段用户评论或独立的插件,或其他任何独立的插 ...
- C#中redis订阅后程序不再继续执行
项目开发中使用到了redis订阅功能,在订阅的代码执行成功后,发现本应继续执行的程序断不到点, 经过查看redis订阅的源码,发现订阅成功后,会一直循环执行一个监听频道推送消息的动作,导致后续代码无法 ...
- 三台linux集群hadoop,在此上面运行hive
---恢复内容开始--- 一,准备 先有三台linux,对hadoop集群的搭建. eddy01:开启一个hdfs的老大namenode,yarn的老大ResourceManager其中进程包括(No ...
- flex兼容性之Webpack3+postcss+sass+css
1:⚠️⚠️ 首先安装依赖 npm install --save-dev webpack style-loader css-loader postcss-loader sass-loader auto ...
- leetcode5
public class Solution { private int lo, maxLen; public String LongestPalindrome(String s) { int len ...