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. 第一章 HTML+CSS(中)

    4.域元素(form表单.textarea文本域.fieldset域集合.input使用) 案例 表单 用户名: 密码: 昵称: 你喜欢的水果有? 苹果 黄瓜 香蕉 请选择性别 男 女 请选择你要的网 ...

  2. Day 05 可变不可变、数据类型内置方法

    1.可变类型:值改变,但是id不变,证明就是改变原值,是可变类型 2.不可变类型:值改变,但是id也跟着改变,证明是产生新的值,是不可变类型 数字类型 一.整型int 1.用途:记录年龄.等级.数量 ...

  3. 如何在hanlp词典中手动添加未登录词

     我们在使用hanlp词典进行分词的时候,难免会出现分词不准确的情况,原因是由于内置词典中并没有收录当前的这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作,下 ...

  4. Spring Cloud(Dalston.SR5)--Zuul 网关-路由配置

    Spring Cloud 在 Zuul 的 routing 阶段实现了几个过滤器,这些过滤器决定如何进行路由工作. 简单路由(SimpleHostRoutingFilter) 该过滤器运行后,会将 H ...

  5. Eclipse+PyDev 安装和配置

    Eclipse+PyDev 安装和配置 2012-03-17 23:23:23 | 17465次阅读 | 评论:0 条 |  Python开发有很多工具,其中Eclipse+Pydev 是最常见的一种 ...

  6. redis 安装配置学习笔记

    redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://downl ...

  7. Java继承(下)

    Object类 在www.oracle中找到java 中的java.lang在中找到object类中找到可以看到在java语言中的定义 如何修改object中的equals类及测试 在object中类 ...

  8. set-----》集合

    1.set 是无序  不重复的序列 2.创建 list = [] dic = {"k1":123} set = {"123","333"}  ...

  9. MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法

    今天在测试MySQL的连接时候,发现连接不通过,并报错ERROR 2003 (HY000): Can't connect to mysql server on '192.168.10.210' (11 ...

  10. [UE4]Text Box

    Text Box:文本输入控件. 一.新建一个名为testTextBox的UserWidget,添加一个名为“EditableTextBox_0”的TextBox到默认容器Canvas Panel 二 ...