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. oracle-rman-3

    http://blog.csdn.net/leshami/article/details/6032525 rman概述及体系结构 http://blog.itpub.net/23513800/view ...

  2. kvm报错集

    虚拟机console窗口看到一些报错 也可以在终端使用dmesg命令查看 [17617.701174] kvm [17393]: vcpu0 unhandled rdmsr: 0x1ad [19053 ...

  3. Linux eclipse 编译C++

    1.软件安装 2.新建C++工程 3.输入新建文件夹的名字 4.新建main.cpp文件 5.编辑main.cpp #include<iostream> int main(){ std:: ...

  4. 承接AR定制AR项目外包(正规公司,内附案例)

    京团队长年承接AR项目外包 咨询QQ:372900288  微信:liuxiang0884 以下是AR项目案例演示,索取更多案例请通过以上方式在线联系我们

  5. SQL注入检测

    目前只支持单个对象,不支持对象中包含对象 /// <summary> /// 检查SQL中的非法字符 /// </summary> public class SQLInject ...

  6. Python的socket

    第一部分socket的简单示例 服务器部分: """ Description: Author:Nod Date: Record: #------------------- ...

  7. python:数据类型list

    一.列表list list是python中基础的数据类型之一,它是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型 li = ['alex', 123, True, (1, 2, 3 ...

  8. Oracle 查询合并列

    在ORACLE  查询时,有时要将多个列合并成一行,其方法如下: 1. decode 函数 decode 函数的语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省 ...

  9. InvocationHandler和Proxy(Class)的动态代理机制详解

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的 ...

  10. 简单快捷使用Git

    1.简介和安装Git是世界上目前最先进的分布式版本控制系统.安装:https://git-for-windows.github.io下载.设置姓名和email:git config --global ...