Java集合类的学习(三)——List

水文模型大合集---SWAT模型、VIC模型、HEC-HMS模型、HSPF模型、FVCOM模型、Delft3D模型、HYPE模型....... 1.1 面源污染概要1.2 SWAT模型及应用1.3 SWAT模型原理1.4 SWAT模型输入文件1.5 ArcGIS与SWAT关系。 阅读详情

1.3         List

1.3.1        概述

前面我们讲述的Collection接口实际上并没有直接的实现类。而List是容器的一种,表示列表的意思。当我们不知道存储的数据有多少的情况,我们就可以使用List 来完成存储数据的工作。例如前面提到的一种场景。我们想要在保存一个应用系统当前的在线用户的信息。我们就可以使用一个List来存储。因为List的最大的特点就是能够自动的根据插入的数据量来动态改变容器的大小。下面我们先看看List接口的一些常用方法。

1.3.2         常用方法

List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。

面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。

u       void add(int index, Object element) :添加对象element到位置index上

u       boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有的元素

u       Object get(int index) :取出下标为index的位置的元素

u       int indexOf(Object element) :查找对象element 在List中第一次出现的位置

u       int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置

u       Object remove(int index) :删除index位置上的元素

u       Object set(int index, Object element) :将index位置上的对象替换为element 并返回老的元素。

先看一下下面表格:

 

 

简述 

实现 

操作特性 

成员要求 

List 

提供基于索引的对成员的随机访问 

ArrayList 

提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好 

成员可为任意Object子类的对象 

LinkedList 

对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支持性能较差 

成员可为任意Object子类的对象 

在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于您特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好。

我们以ArrayList 为例,先看一个简单的例子:

例子中,我们把12个月份存放到ArrayList 中,然后用一个循环,并使用get()方法将列表中的对象都取出来。

而LinkedList 添加了一些处理列表两端元素的方法(下图只显示了新方法):

使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数据结构。

我们再来看另外一个使用LinkedList 来实现一个简单的队列的例子:

import java.util.*;

 

public class ListExample {

  public static void main(String args[]) {

    LinkedList queue = new LinkedList();

    queue.addFirst("Bernadine");

    queue.addFirst("Elizabeth");

    queue.addFirst("Gene");

    queue.addFirst("Elizabeth");

    queue.addFirst("Clara");

    System.out.println(queue);

    queue.removeLast();

    queue.removeLast();

    System.out.println(queue);

  }

}

运行程序产生了以下输出。请注意,与 Set 不同的是 List 允许重复。

[Clara, Elizabeth, Gene, Elizabeth, Bernadine]

[Clara, Elizabeth, Gene]

该的程序演示了具体 List 类的使用。第一部分,创建一个由 ArrayList 支持的 List。填充完列表以后,特定条目就得到了。示例的 LinkedList 部分把 LinkedList 当作一个队列,从队列头部添加东西,从尾部除去。

List 接口不但以位置友好的方式遍历整个列表,还能处理集合的子集:

u       ListIterator listIterator() :返回一个ListIterator 跌代器,默认开始位置为0

u       ListIterator listIterator(int startIndex) :返回一个ListIterator 跌代器,开始位置为startIndex 

u       List subList(int fromIndex, int toIndex) :返回一个子列表List ,元素存放为从 fromIndex 到toIndex之前的一个元素。

处理 subList() 时,位于 fromIndex 的元素在子列表中,而位于 toIndex 的元素则不是,提醒这一点很重要。以下 for-loop 测试案例大致反映了这一点:

for (int i=fromIndex; i<toIndex; i++) {

  // process element at position i

}

此外,我们还应该提醒的是:对子列表的更改(如 add()、remove() 和 set() 调用)对底层 List 也有影响。

ListIterator 接口 

ListIterator 接口继承 Iterator 接口以支持添加或更改底层集合中的元素,还支持双向访问。

以下源代码演示了列表中的反向循环。请注意 ListIterator 最初位于列表尾之后(list.size()),因为第一个元素的下标是0。

List list = ...;

ListIterator iterator = list.listIterator(list.size());

while (iterator.hasPrevious()) {

  Object element = iterator.previous();

  // Process element

}

正常情况下,不用 ListIterator 改变某次遍历集合元素的方向 — 向前或者向后。虽然在技术上可能实现时,但在 previous() 后立刻调用 next(),返回的是同一个元素。把调用 next() 和 previous() 的顺序颠倒一下,结果相同。

我们看一个List的例子:

import java.util.*;

 

public class ListIteratorTest {

public static void main(String[] args) {

List list = new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

list.add("ddd");

System.out.println("下标0开始:"+list.listIterator(0).next());//next()

System.out.println("下标1开始:"+list.listIterator(1).next());

System.out.println("子List 1-3:"+list.subList(1,3));//子列表

ListIterator it = list.listIterator();//默认从下标0开始

//隐式光标属性add操作 ,插入到当前的下标的前面

it.add("sss");

while(it.hasNext()){

System.out.println("next Index="+it.nextIndex()+",Object="+it.next());

}

//set属性

ListIterator it1 = list.listIterator();

it1.next();

it1.set("ooo");

ListIterator it2 = list.listIterator(list.size());//下标

while(it2.hasPrevious()){

System.out.println("previous Index="+it2.previousIndex()+",Object="+it2.previous());

}

}

}

程序的执行结果为:

下标0开始:aaa

下标1开始:bbb

子List 1-3:[bbb, ccc]

next Index=1,Object=aaa

next Index=2,Object=bbb

next Index=3,Object=ccc

next Index=4,Object=ddd

previous Index=4,Object=ddd

previous Index=3,Object=ccc

previous Index=2,Object=bbb

previous Index=1,Object=aaa

previous Index=0,Object=ooo

我们还需要稍微再解释一下 add() 操作。添加一个元素会导致新元素立刻被添加到隐式光标的前面。因此,添加元素后调用 previous() 会返回新元素,而调用 next() 则不起作用,返回添加操作之前的下一个元素。下标的显示方式,如下图所示:

对于List 的基本用法我们学会了,下面我们来进一步了解一下List的实现原理,以便价升我们对于集合的理解。

1.3.3         实现原理

前面已经提了一下Collection的实现基础都是基于数组的。下面我们就已ArrayList 为例,简单分析一下ArrayList 列表的实现方式。首先,先看下它的构造函数。

下列表格是在SUN提供的API中的描述:

 

ArrayList()           Constructs an empty list with an initial capacity of ten.

ArrayList(Collection c)           Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.

ArrayList(int initialCapacity)           Constructs an empty list with the specified initial capacity.

其中第一个构造函数ArrayList()和第二构造函数ArrayList(Collection c) 是按照Collection 接口文档所述,所应该提供两个构造函数,一个无参数,一个接受另一个 Collection。

第3个构造函数:

ArrayList(int initialCapacity) 是ArrayList实现的比较重要的构造函数,虽然,我们不常用它,但是某认的构造函数正是调用的该带参数:initialCapacity 的构造函数来实现的。 其中参数:initialCapacity 表示我们构造的这个ArrayList列表的初始化容量是多大。如果调用默认的构造函数,则表示默认调用该参数为initialCapacity =10 的方式,来进行构建一个ArrayList列表对象。

为了更好的理解这个initialCapacity 参数的概念,我们先看看ArrayList在Sun 提供的源码中的实现方式。先看一下它的属性有哪些:

ArrayList 继承了AbstractList 我们主要看看ArrayList中的属性就可以了。

ArrayList中主要包含2个属性:

u       private transient Object elementData[];

u       private int size;

其中数组::elementData[] 是列表的实现核心属性:数组。 我们使用该数组来进行存放集合中的数据。而我们的初始化参数就是该数组构建时候的长度,即该数组的length属性就是initialCapacity 参数。

Keys:transient 表示被修饰的属性不是对象持久状态的一部分,不会自动的序列化。

第2个属性:size表示列表中真实数据的存放个数。

我们再来看一下ArrayList的构造函数,加深一下ArrayList是基于数组的理解。

从源码中可以看到默认的构造函数调用的就是带参数的构造函数:  

public ArrayList(int initialCapacity)

不过参数initialCapacity=10 。

我们主要看ArrayList(int initialCapacity) 这个构造函数。可以看到:

this.elementData = new Object[initialCapacity];

我们就是使用的initialCapacity这个参数来创建一个Object数组。而我们所有的往该集合对象中存放的数据,就是存放到了这个Object数组中去了。

我们在看看另外一个构造函数的源码:

这里,我们先看size() 方法的实现形式。它的作用即是返回size属性值的大小。然后我们再看另外一个构造函数public ArrayList(Collection c) ,该构造函数的作用是把另外一个容器对象中的元素存放到当前的List 对象中。

可以看到,首先,我们是通过调用另外一个容器对象C 的方法size()来设置当前的List对象的size属性的长度大小。

接下来,就是对elementData 数组进行初始化,初始化的大小为原先容器大小的1.1倍。最后,就是通过使用容器接口中的Object[] toArray(Object[] a) 方法来把当前容器中的对象都存放到新的数组elementData 中。这样就完成了一个ArrayList 的建立。

可能大家会存在一个问题,那就是,我们建立的这个ArrayList 是使用数组来实现的,但是数组的长度一旦被定下来,就不能改变了。而我们在给ArrayList对象中添加元素的时候,却没有长度限制。这个时候,ArrayList 中的elementData 属性就必须存在一个需要动态的扩充容量的机制。我们看下面的代码,它描述了这个扩充机制: 

这个方法的作用就是用来判断当前的数组是否需要扩容,应该扩容多少。其中属性:modCount是继承自父类,它表示当前的对象对elementData数组进行了多少次扩容,清空,移除等操作。该属性相当于是一个对于当前List 对象的一个操作记录日志号。 我们主要看下面的代码实现:

1.      首先得到当前elementData 属性的长度oldCapacity。

2.      然后通过判断oldCapacity和minCapacity参数谁大来决定是否需要扩容

n         如果minCapacity大于oldCapacity,那么我们就对当前的List对象进行扩容。扩容的的策略为:取(oldCapacity * 3)/2 + 1和minCapacity之间更大的那个。然后使用数组拷贝的方法,把以前存放的数据转移到新的数组对象中

n         如果minCapacity不大于oldCapacity那么就不进行扩容。

下面我们看看上的那个ensureCapacity方法的是如何使用的:

上的两个add方法都是往List 中添加元素。每次在添加元素的时候,我们就需要判断一下,是否需要对于当前的数组进行扩容。

我们主要看看  public boolean add(Object o)方法,可以发现在添加一个元素到容器中的时候,首先我们会判断是否需要扩容。因为只增加一个元素,所以扩容的大小判断也就为当前的size+1来进行判断。然后,就把新添加的元素放到数组elementData中。

第二个方法public boolean addAll(Collection c)也是同样的原理。将新的元素放到elementData数组之后。同时改变当前List 对象的size属性。

类似的List 中的其他的方法也都是基于数组进行操作的。大家有兴趣可以看看源码中的更多的实现方式。

最后我们再看看如何判断在集合中是否已经存在某一个对象的:

由源码中我们可以看到,public boolean contains(Object elem)方法是通过调用public int indexOf(Object elem)方法来判断是否在集合中存在某个对象elem。我们看看indexOf方法的具体实现。

u       首先我们判断一下elem 对象是否为null,如果为null的话,那么遍历数组elementData 把第一个出现null的位置返回。

u       如果elem不为null 的话,我们也是遍历数组elementData ,并通过调用elem对象的equals()方法来得到第一个相等的元素的位置。

这里我们可以发现,ArrayList中用来判断是否包含一个对象,调用的是各个对象自己实现的equals()方法。在前面的高级特性里面,我们可以知道:如果要判断一个类的一个实例对象是否等于另外一个对象,那么我们就需要自己覆写Object类的public boolean equals(Object obj) 方法。如果不覆写该方法的话,那么就会调用Object的equals()方法来进行判断。这就相当于比较两个对象的内存应用地址是否相等了。

在集合框架中,不仅仅是List,所有的集合类,如果需要判断里面是否存放了的某个对象,都是调用该对象的equals()方法来进行处理的。

从零构建:如何用MATLAB打造你的第一个Stewart平台运动学仿真器 本文详细介绍了如何使用MATLAB从零构建一个六自由度Stewart平台运动学仿真器,涵盖基础理论、环境配置、运动学建模、动态轨迹规划和实时可视化实现。通过MATLAB的Robotics System Toolbox和Simulink等工具,读者可以掌握六自由度Stewart平台的逆运动学求解、正运动学求解及仿真系统集成,适用于飞行模拟器和精密定位等应用场景。 阅读详情

相关推荐

【三维重建】基于多视角图像的三维重建

基于多视角图像的三维重建》

m0_64446860的博客 8759

java jsonarray转list_新手如何学习Java?附Java常见知识点与学习心得

知识点总结关于变量、方法、类这些基本概念就不总结了。常用数据类型基本数据类型一般就是数值、字符串、布尔数值——int、double、long……字符串——String布尔——boolean然后就是一些容器,数组、集合……数组——Arrays集合——List、ArrayList……而在这些基础上,还有一些根据这些加以扩展的类型,常见的就是时间类、操作类、计算类……时间——LocalDate、Loca...

weixin_39743722的博客 430

WOL唤醒配置(以太网、PHY、MAC)

MAC 就是以太网控制器,属于OSI的数字链路层。phy 属于OSI的物理层(Physical layer),所以叫phy。CPU Mac与phy通信通过MII接口,数据的传输通过MDIO数据线。通过配置phy的相关寄存器实现不同的功能。

qq_58264156的博客 8632

list集合下标从几开始_Java基础进阶 集合框架详解

今日任务1、List接口介绍(掌握常用List特有方法) 2、练习 3、ArrayList介绍(必须清楚集合的特征、掌握集合中的方法) 4、LinkedList介绍(必须清楚集合的特征、掌握集合中的方法) 5、Vector 类介绍(了解) 6、List下的子类总结(掌握) 7、Set 接口介绍(掌握Set集合的特性) 8、HashSet 集合(掌握HashSet集合的应用)1、List接口介绍在学...

weixin_39931146的博客 6554

多尺度Transformer+特征融合新范式,算力减半精度猛增

在大模型时代,多尺度特征融合与Transformer架构的结合正成为研究热点。多尺度特征融合能够捕捉数据在不同尺度上的关键信息,而Transformer架构凭借其强大的并行处理能力和对长距离依赖的建模能力,为复杂数据处理提供了新的思路。这种结合在处理多模态数据时展现出巨大潜力。

Tulingxueshu的博客 1060

代谢组学数据分析实战:用R语言从PCA、PLS-DA到OPLS-DA一步步搞定(附代码)

本文详细介绍了使用R语言进行代谢组学数据分析的全流程,从数据预处理到PCA、PLS-DA和OPLS-DA模型构建与验证。通过实际案例和代码示例,帮助研究者掌握关键分析技术,提升数据解读能力,特别适合生命科学领域的研究人员。

weixin_28689507的博客 133

List

一、常用方法 List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。 面向位置的操作包括插入某个元素或 Collection 的...

weixin_45807718的博客 204

apm软件仿真+QGC地面站 环境搭建

本教程使用场景:apm软件仿真运行于虚拟机 ubuntu环境。qgc地面站位于windows 系统。两个环境在同一台电脑上。 一.apm仿真环境搭建 1.安装vm虚拟机及ubuntu 18。 2.ubuntu下 下载Ardupilot 飞控源码 并配置环境。 下载源码: git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive 配置所需运行的环境:

qthello 6110

List列表的使用

目录 List列表的使用 List链表的特点 为什么时间固定呢? List初始化方式 List容器的插入/删除操作 List容器的个性化排序与特定元素的移除&个性化 用find()函数查找某一个对象的索引 不同容器间的赋值函数assign() 删除自定义的重复数据函数unique() 自定义合并排序函数Marge() 单纯的合并函数splice() List列表的使用 List链表的特点 链表是一系列节点,其中每个节点除包含对象或值外还指向下一个节点,即每个节点都链接到下

超级霸霸强的博客 758

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1259

Redis学习手册(List数据类型)

一、概述:       在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。       从元素插入和

hujiao_jingling的专栏 1122

【YOLOv8科研级优化】集成YOLOv10的SCDown采样模块,让你的模型下采样更高效更精准

打开确保模型解析器能识别SCDown模块。通过将YOLOv10的SCDown模块集成到YOLOv8中,我们实现了一个“细节保留+高效下采样”的目标检测模型。这个改进不仅在工程上能提升小目标、细粒度场景的检测效果,更在科研上提供了“分阶段下采样”的创新思路——这种思路可以延伸到其他卷积网络(如ResNet、MobileNet)的下采样层改进中,帮你在论文中打造独特的研究点。

m0_71589036的博客 137

菜鸟修行之路----java集合类三:List之LinkedList源码学习

菜鸟修行之路----java集合类三:List之LinkedList源码学习 ​ ​ LinkedList 是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较 慢。另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用 1.LinkedList概述 LinkList主要具有以下特点: 排列有序,可重复 ...

sumeriancer的博客 378

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

学习笔记_简述java List、Set、Map三者区别

简述 在我看来java中的List、Set、Map三者都是对数据进行操作。 其核心为增、删、查、改(set不能直接更改)。 在此基础上三者各有特点。 List 一、使用: ArrayList、LinkedList、Vector三者基本一致,即方法调用基本相同且三者都是有序的 、可重复的。 其强调顺序。 二、底层实现与安全性: 类 底层实现 安全性 Vector 数组 安全 ArrayList 数组 不安全 LinkedList 链表 不安全 此处安全是指同一时刻只有一个进

a2387s的博客 296

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java集合类: Set、List、Map、Queue区别及应用

Java集合类基本概念 Java集合类架构层次关系 Java集合类的应用场景代码

专注自动化、性能测试、测试架构学习交流 3124

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java-List集合类全面解析

Java中集合框架是数据处理的核心工具之一,List作为单列集合Collection的重要子接口,凭借其有序、可重复的特性,成为日常开发中使用频率极高的组件。本文将从基础概念入手,深入剖析List接口及其实现类的内部机制、应用场景与最佳实践,并结合大量代码示例帮助读者全面掌握这一核心知识点。

aa_hdkf_vg的博客 2058

【Java集合类之使用List】

Java集合类之使用List 廖雪峰java教程学习笔记 本博客是基于廖雪峰java教程写的学习笔记 文章目录Java集合类之使用List前言一、List和数组的区别二、`List`接口三、利用`LinkedList`实现`List`接口四、List的特点五、创建List六、遍历List七、List和ArrayList转换总结 前言 本人计算机小白一枚,写博客的原因一是为了让自己能够更好地理解知识点,加强记忆,二是为了让有需要的同学康康,三是为了能够结交到有相同兴趣的小伙伴,大家一起加油!!!然后本博客

qq_57553693的博客 1054

Java中有哪些集合类?常用的几种java集合类总结 详细解读 Java 的集合类

Java 的集合框架是一个统一的架构,用于表示和操作一组对象。它提供了多种接口和类,遵循了一定的设计原则,具备更高的灵活性和可扩展性。Collection:集合的根接口。List:有序集合,允许重复元素。Set:不允许重复元素的集合。Map:键值对集合,键唯一但值可以重复。Queue:用于表示数据结构中的队列。Java 集合类框架为开发者提供了强大的工具,以方便有效地操作数据。通过理解每种集合接口及其实现的特性,可以帮助我们在开发过程中做出更好的选择。

智通全网络工作室的博客 2096

Java集合类中的List、Set和Map及其实现类的详细介绍

本文主要介绍了Java集合类中的List、Set和Map及其实现类的概念和特点,并在最后对实现类是否可以为null值做了总结

青灯文案的博客 2070

Java的集合类介绍

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。Java基础部分算法与编程数据库部分流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

2401_83817916的博客 1009

一文搞定Java集合类,你还在为Java集合类而烦恼吗?

常用集合类

轻松玩编程 1189

java map存储list集合_Java集合类(List、map、list集合)

1.1集合类的概述Java.util包中提供了一些集合类,这些集合类右被称为容器。提到容器不难想到数组,集合类与数组不同之处是:数组的长度是固定长度,集合的长度是可变的;数组是用来存放基本数据类型,集合是用来存放对象的引用。常用的集合有List集合、Set集合和Map集合,其中List和Set继承了Collection接口,各接口还提供了不同的实现类。上述集合类的继承关系如图14.1所示:1.1C...

weixin_30706851的博客 5243

Java集合类:Set、List、Map、Queue 详解

Java集合类: Set、List、Map、Queue使用场景梳理 相关学习资料 http://files.cnblogs.com/LittleHann/java集合排序及java集合类详解(collection、list、map、set).rar http://blog.sina.com.cn/s/blog_a345a8960101k9vx.html http://f51889920.iteye...

CHANGE ING的博客 641

Java的集合类:List、Set、Map

Java 中的集合类可以分为 List、Set 和 Map 三个主要类别。在使用集合类时,请注意选择适当的实现类,并根据需要使用 List、Set 和 Map 接口。同时,还要注意集合类的动态性,以便在运行时动态调整其大小。

小虎哥的技术博客 787

java集合类List的用法

为什么出现集合类 面对对象语言对事物的体现就是以对象的形式,所以方便多个对象的操作。Java提供了集合类 数组和集合的区别: A:长度区别 数组的长度固定 集合长度可变 B:数组中可以存储基本数据类型 集合只能存储对象 集合类的特点: 集合只能存储对象,集合长度是可变的,集合可以存储不同类型的对象 不同的需求,java数据提供了不同的集合类,java提供了很多个集合类,但它们的...

秋城落叶的博客 2400
上一篇: Java集合类的学习(二)——Collection接口和Iterator迭代器
下一篇: Java集合类的学习(四)——Set
Jmark_GC
博客等级 码龄14年 32粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值