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语法基础——集合框架的更多相关文章

  1. Java中的集合框架(上)

    Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...

  2. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  3. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  4. 第51节:Java当中的集合框架Map

    简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...

  5. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  6. Java中的集合框架-Collections和Arrays

    上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...

  7. Java中的集合框架-Map

    前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...

  8. Java中的集合框架-Collection(二)

    上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...

  9. Java当中的集合框架Map

    简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...

随机推荐

  1. HAproxy增加日志记录功能和自定义日志输出内容、格式

    http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能   1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...

  2. 18.2 of的函数集中的of是Open Firmware的缩写

    内核中操作dtb的一套函数都是of开头,这个of是open firmware.dts的方法来源于open Firmware On Sun SPARC systems, the Open Firmwar ...

  3. OSS阿里云上传文件 前端js下载url跨域问题

    场景: 1.后端上传文件至阿里云OSS,返回得到一个URL. 2.前端用这个URL下载文件,ajax请求异常:No 'Access-Control-Allow-Origin' header is pr ...

  4. jenkins使用(ubuntu16.0环境)

    本文总结了使用jenkins过程.大部分是网上链接,以后自已查看使用. ssh远程链接服务器 检查是否开启ssh   ps -ef|grep ssh 1.安装ssh 2.开启root用户 3.充许ro ...

  5. jenkins 找插件下载的方法

    登陆jenkins官网 https://jenkins.io/ 搜索需要的插件,点击 注意这步,要点击右上角Archives 下载对应的 hpi包 然后把下载的hpi文件,放到 jenkins 插件管 ...

  6. 从神经网络到卷积神经网络(CNN)

    我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如下图中就多了许多传统神经网络没有的层次 ...

  7. Vue 封装的noData组件

    <template> <div :style="{color: fontColor}" :class="['noDataView', iconType] ...

  8. Nginx 安装配置教程

    1.安装 Nginx 的先决条件 依赖库:GCC, PCRE, zlib, OpenSSL . * GCC (Nginx 由 C 语言编写,因此需要在系统上安装一个编译工具) 基本上 Linux 自带 ...

  9. 电商中的库存管理实现-mysql与redis

        库存是电商系统的核心环节,如何做到不少卖,不超卖是库存关心的核心业务问题.业务量大时带来的问题是如何更快速的处理库存计算. 此处以最简模式来讨论库存设计. 以下内容只做分析,不能直接套用,欢迎 ...

  10. FTP管理常用命令

    #新增用户liuhui,指定群组为groupa,附加群组为groupb,家目录为/ftp/groupbuseradd -g groupa -G groupb -d /ftp/groupb linhui ...