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. 依据Axis2官网的高速入门英文文档总结

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ksdb0468473/article/details/29918027 首先在Eclipse中创建一 ...

  2. Linux 判断进程是否运行

    问题 linux平台 多人开发服务器,有时自己运行一个进程在服务器上,但未知原因导致停止运行了,需要添加一个定时任务,用于监控指定进程是否运行 方法 一个通用的方法,以便使用在不同项目中. 思路:定时 ...

  3. 安装phpssdbadmin

    1:先安装nginx+php   参考博文:http://www.cnblogs.com/lemon-le/p/7161356.html 里面有详细的搭建lnmp架构,这里只需参照安装php和ngin ...

  4. Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑 ...

  5. mongodb集群配置副本集

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  6. docker安装solr集群5.3.1

    docker-compose.yml: version: '3' services: zookeeper-A: image: zookeeper:3.4.11 ports: - "12181 ...

  7. 使用lite-server

    进入项目根目录,执行下列步骤 安装lite-server npm install lite-server 新建配置文件bs-config.json bs-config.json中可以: 指定监听的端口 ...

  8. 执行sql语句为什么?用PreparedStatement要比Statement好用

    PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...

  9. linux 6.5上创建新用户后,不能登陆?

    linux 6.5上创建新用户后,不能登陆? 使用root账户登陆却可以! [root@ log]# useradd mtdk[root@ log]# echo 123abc |passwd --st ...

  10. os.rename 和os.replace

    f1 = open("hello.txt","w") f1.write("hello,my name is bobo.") f1.close ...