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 ...
随机推荐
- 2.2 如何在Visio中写上、下角标
快捷键:下标[“Ctrl”+ “=”] 上标[“Ctrl”+“shift”+“=”]
- VUE打包上线优化
1.将vue vue-router vuex 尽量使用CDN externals: { 'vue':'Vue', 'vue-router':'VueRouter', 'vuex':'Vuex', 'a ...
- CentOS 7.2 下nginx SSL证书部署的方法(使用crt以及key 配置)
转自:https://www.jb51.net/article/107350.htm 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 证书 ? 1 2 3 # ...
- easyui layout布局的属性说明
layout布局的属性说明: 名称 类型 描述 默认值 fit boolean 当设置为 true 时,就设置布局(layout)的尺寸适应它的父容器.当在 'body' 标签上创建布局(layout ...
- Java String对象的问题 String s="a"+"b"+"c"+"d"
1, String s="a"+"b"+"c"+"d"创建了几个对象(假设之前串池是空的) 2,StringBuilde ...
- docker 小结
1.docker修改镜像地址: /etc/docker/daemon.json 2.docker 启动容器: docker run -t -i ubuntu:14.04 /bin/bash 3.查看容 ...
- Vue 目录结构 绑定数据 绑定属性 循环渲染数据
一.目录结构分析 node_modules 项目所需要的各种依赖 src 开发用的资源 assets 静态资源文件 App.vue 根组件 main.js 配置路由时会用 .babelrc 配置文件 ...
- nginx的proxy_pass路径转发规则最后带/问题
一.location匹配路径末尾没有 / location /sta{proxy_pass http://192.168.1.1/sta;} 外面访问:http://外网IP/sta/sta1.htm ...
- php解析excel文件
public static function getStaffByXlsx($path) { /*dirname(__file__): 当前代码所在的目录,$path: ”/文件名“ */ $PHPR ...
- Python 快速排序 算法
基本的快排算法,二分法 #!/usr/bin/env python # encoding: utf-8 l1=[1,4,2,6,3] def path_sort(l,start_index,end_i ...