Java基础总结二(集合)

[java][基础]集合(二) 底层数据结构是哈希表存取无序不可以存储重复元素没有索引,不能使用普通for循环遍历Map集合概述interface Map K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用//创建集合对象//V put(K key, V value) 将指定的值与该映射中的指定键相关联map.put("itheima001","林青霞");map.put("itheima002","张曼玉"); 阅读详情

Java基础总结二(集合)

集合概述

什么是集合

  • 集合框架:集合就是存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。
    任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
  • 接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。
  • 实现:集合接口的具体实现,是重用性很高的数据结构。
  • 算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。这些算法通常是多态的,因为相同的方法可以在同一个接口被多个类实现时有不同的表现。事实上,算法是可复用的函数。

集合框架通过提供有用的数据结构和算法使你能集中注意力于你的程序的重要部分上,而不是为了让程序能正常运转而将注意力于低层设计上。
通过这些在无关API之间的简易的互用性,使你免除了为改编对象或转换代码以便联合这些API而去写大量的代码。 它提高了程序速度和质量。

集合和数组的区别

  • 数组是固定长度的,集合是可变长度的。
  • 数组可以存储基本数据类型,也可以存储引用数据类型。
  • 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。

使用集合框架的好处

  1. 容量自增长。
  2. 提供了高性能的数据结构和算法,使编码更轻松,提高程序速度和质量。
  3. 可以方便的扩展或改写集合,提高代码的复用性和操作性。

常见的集合类有哪些

Map接口和Collection接口是所有集合框架的父接口:

  1. Collection接口的子接口包括:Set接口和List接口。
  2. Map接口的主要实现类有:HashMap、TreeMap、HashTable、ConcurrentHashMap、Properties等。
  3. Set接口的主要实现类有:HashSet、TreeSet、LinkedHashSet等。
  4. List接口的主要实现类有:ArrayList、LinkedList、Stack、Vector等。

img

简述List、Set、Map三者区别

  • Map不是Collection的子接口,List和Set是Collection的子接口。
  • List:一个有序的容器(元素的存入集合的顺序和取出的顺序一致),元素可以重复,可以插入多个null元素,常用实现类有ArrayList、LinkedList、Vector。
  • Set:一个无序的容器,不可以存储重复的元素,只允许存入一个null元素,必须保证元素的唯一性。Set 接口常用实现类是 HashSet、LinkedHashSet 以及 TreeSet。
  • Map:一个存储键值对的容器。key无序且唯一,value允许重复。Map 的常用实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap。

集合框架底层数据结构

  • List

    • ArrayList:数组。
    • Vector:数组。
    • LinkedList:双向循环链表。
  • Set

    • HashSet(无序、唯一):基于HashMap实现,底层采用HashMap来保存元素。
    • LinkedHashSet :LinkedHashSet继承与HashSet,并且内部是通过LinkedHashMap来实现的。
    • TreeSet(有序、唯一):红黑树(自平衡排序二叉树)。
  • Map

    • HashMap:JDK1.8之前是数组+链表组成的,数组是HashMap的主体,链表这是为了解决哈希冲突而存在。JDK1.8之后再解决哈希冲突时有了较大的变化,当链表大于阈值(默认为8),并且数组长度大于64,会将链表转化为红黑树,来减少搜索时间。如果数组小于64,则会先扩容。
    • LinkedHashMap :LinkedHashMap 继承自 HashMap,所以它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成。另外,LinkedHashMap 在上面结构的基础上,增加了一条双向链表,使得上面的结构可以保持键值对的插入顺序。同时通过对链表进行相应的操作,实现了访问顺序相关逻辑。
    • TreeMap: 红黑树(自平衡的排序二叉树)。

哪些集合类是线程安全的

  • Vector:就比ArrayList多了同步化机制,因为效率低,现在已经不太建议使用。
  • Stack:堆栈类,先进后出。
  • HashTable:比HashMap多了线程安全。

集合的快速失败机制 “fail-fast”

是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能会产生 fail-fast 机制。

例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 ConcurrentModificationException 异常,从而产生fail-fast机制。

原因:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expectedmodCount值,是的话就返回遍历;否则抛出异常,终止遍历。

解决办法:

  1. 使用并发包中的容器,如CopyOnWriteArrayList来替换ArrayList。
  2. 使用迭代器中的方法。

Collection接口

List接口

迭代器Iterator是什么?

Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。

Iterator怎么使用?有什么特点?

Iterator 使用代码如下:

List<String> list = new ArrayList<>();
Iterator<String> it = list. iterator();
while(it. hasNext()){
  String obj = it. next();
  System. out. println(obj);
}

Iterator 的特点是只能单向遍历,但是更加安全,因为它可以确保,在当前遍历的集合元素被更改的时候,就会抛出 ConcurrentModificationException 异常。

如何边遍历边移除 Collection 中的元素?
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
   *// do something*
   it.remove();
}

一种最常见的错误代码如下:

for(Integer i : list){
   list.remove(i)
}
ArrayList的优缺点
  • 优点:ArrayList底层以数组实现,是一种随机访问模式,查找的时候非常快。ArrayList在顺序添加一个元素时候非常方便。
  • 缺点:插入和删除元素时需要做复制操作,如果元素很多,那么就比较耗费性能。
ArrayList和LinkedList的区别
  • 数据结构实现:ArrayList是动态数组数据结构实现,而LinkedList是双向链表的数据结构实现。
  • 访问效率:ArrayList通过索引访问效率要高,LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
  • 增加和删除效率:在非尾部的增加和删除操作,LinkedList要比ArrayList效率要高。
  • 内存空间占用:LinkedList的元素要更占内存,因为LinkedList的节点除了存储数据,还要存储两个引用,分别指向前一个元素和后一个元素。
  • 线程安全:都不保证线程安全。
ArrayList 和 Vector 的区别是什么?
  • 线程安全:Vector使用Synchronized实现线程同步,是线程安全的,而ArrayList是非线程安全的。
  • 性能:ArrayList的性能要优于Vector。
  • 扩容:ArrayList 和 Vector 都会根据实际的需要动态的调整容量,只不过在 Vector 扩容每次会增加 1 倍,而 ArrayList 只会增加 50%。

Vector类的所有方法都是同步的。可以由两个线程安全地访问一个Vector对象、但是一个线程访问Vector的话代码要在同步操作上耗费大量的时间。

ArrayList不是同步的,所以在不需要保证线程安全时时建议使用ArrayList。

多线程场景下如何使用 ArrayList?
List<String> synchronizedList = Collections.synchronizedList(list);
synchronizedList.add("aaa");
synchronizedList.add("bbb");

for (int i = 0; i < synchronizedList.size(); i++) {
    System.out.println(synchronizedList.get(i));
}

Set接口

HashSet的实现原理

HashSet 是基于 HashMap 实现的,HashSet的值存放于HashMap的key上,HashMap的value统一为PRESENT(Object对象),因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调用底层 HashMap 的相关方法来完成,HashSet 不允许重复的值。

HashSet与HashMap的区别
HashMapHashSet
实现了Map接口实现Set接口
存储键值对仅存储对象
调用put()向map中添加元素调用add()方法向Set中添加元素
HashMap使用键(Key)计算HashcodeHashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap相对于HashSet较快,因为它是使用唯一的键获取对象HashSet较HashMap来说比较慢

Queue

BlockingQueue是什么?

Java.util.concurrent.BlockingQueue是一个队列,在进行检索或移除一个元素的时候,它会等待队列变为非空;当在添加一个元素时,它会等待队列中的可用空间。BlockingQueue接口是Java集合框架的一部分,主要用于实现生产者-消费者模式。我们不需要担心等待生产者有可用的空间,或消费者有可用的对象,因为它都在BlockingQueue的实现类中被处理了。Java提供了集中BlockingQueue的实现,比如ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue,、SynchronousQueue等。

在 Queue 中 poll()和 remove()有什么区别?
  • 相同点:都是返回第一个元素,并在队列中删除返回的对象。
  • 不同点:如果没有元素poll()会返回null,而remove()会直接抛出NoSuchElementException异常。

Map

HashMap的实现原理

HashMap概述:HashMap是基于哈希表的Map接口非同步实现。此实现提供了所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序。

HashMap的数据结构:链表散列,即数组和链表的结合体(JDK1.8之后加入红黑树)。

HashMap基于Hash算法实现的:

  1. 当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象元素在数组中的下标。
  2. 存储时,如果出现hash值相同的key,此时有两种情况
    1. 如果key相同,则覆盖原始值。
    2. 如果key不同(出现hash冲突),则将当前节点放入链表中。
  3. 获取时,直接找到hash对应的下表,在比较key是否相同,从而找到对应的值。

需要注意JDK1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

HashMap在JDK1.7和JDK1.8中有哪些不同

不同JDK 1.7JDK 1.8
存储结构数组 + 链表数组 + 链表 + 红黑树
初始化方式单独函数:inflateTable()直接集成到了扩容函数resize()中
hash值计算方式扰动处理 = 9次扰动 = 4次位运算 + 5次异或运算扰动处理 = 2次扰动 = 1次位运算 + 1次异或运算
存放数据的规则无冲突时,存放数组;冲突时,存放链表无冲突时,存放数组;冲突 & 链表长度 < 8:存放单链表;冲突 & 链表长度 > 8:树化并存放红黑树
插入数据方式头插法(先讲原位置的数据移到后1位,再插入数据到该位置)尾插法(直接插入到链表尾部/红黑树)
扩容后存储位置的计算方式全部按照原来方法进行计算(即hashCode ->> 扰动函数 ->> (h&length-1))按照扩容后的规律计算(即扩容后的位置=原位置 or 原位置 + 旧容量)

具体HashMap源码我们分另一篇文章来总结。

HashMap与HashTable有什么区别?

  1. 线程安全:HashMap是非线程安全的,而HashTable是线程安全的;HashTable 内部的方法基本都经过 synchronized 修饰。
  2. 性能:因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它;
  3. 对Null key 和Null value的支持:HashMap 中,null 可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为 null。但是在 HashTable 中 put 进的键值只要有一个 null,直接抛NullPointerException。
  4. 初始容量大小和每次扩充容量大小的不同:①创建时如果不指定容量初始值,HashTable 默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。HashMap 默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。②创建时如果给定了容量初始值,那么 HashTable 会直接使用你给定的大小,而 HashMap 会将其扩充为2的幂次方大小。
  5. 底层数据结构: JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。HashTable 没有这样的机制。

HashMap和ConcurrentHashMap的区别

  1. ConcurrentHashMap对整个数组进行了分割分段(Segment),然后在每一个分段上都用lock锁进行保护,相对于HashTable的synchronized锁的粒度更细,并发性更好,而HashMap没有锁机制,不是线程安全的。(JDK1.8之后ConcurrentHashMap启用了一种全新的方式实现,利用CAS算法)。

ConcurrentHashMap会单独放一篇文章来总结。

辅助工具类

如何实现 Array 和 List 之间的转换?

  • Array 转 List: Arrays. asList(array) ;
  • List 转 Array :List 的 toArray() 方法。

comparable 和 comparator的区别?

  • comparable接口实际上是出自java.lang包,它有一个 compareTo(Object obj)方法用来排序。
  • comparator接口实际上是出自 java.util 包,它有一个compare(Object obj1, Object obj2)方法用来排序。

Collection 和 Collections 有什么区别?

  • java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
  • Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

TreeMap 和 TreeSet 在排序时如何比较元素?

TreeSet 要求存放的对象所属的类必须实现 Comparable 接口,该接口提供了比较元素的 compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap 要求存放的键值对映射的键必须实现 Comparable 接口从而根据键对元素进行排序。

【ComfyUI】SDXL + 单LoRA 房屋平面图渲染装修 本文介绍了一种基于ComfyUI的室内平面设计图自动生成效果图的工作流。该流程通过导入房屋平面图,结合SDXL室内设计模型与北欧风格LoRA模块,快速生成多房间效果展示。工作流包含图像输入、文本处理、模型加载和图像生成等环节,支持风格化渲染和细节补充,适用于建筑设计、家装展示、房地产营销等场景。核心采用SDXL通用室内设计模型和北欧极简LoRA,通过节点衔接实现自动化批量生成,能在短时间内将平面方案转化为逼真的三维效果图。该技术可提升设计呈现效率,辅助客户决策,并应用于教学研究领域。 阅读详情

相关推荐

【Cadence】PSS+PSTB/PAC仿真在开关电源稳定性分析中的关键应用

本文深入探讨了Cadence仿真工具中PSS+PSTB/PAC方法在开关电源稳定性分析中的关键应用。针对开关电源作为时变非线性系统的特性,传统STB仿真方法会失效。文章详细阐述了如何通过PSS分析找到周期稳态,并在此基础上利用PSTB或PAC进行精确的环路增益和小信号频响分析,为电源设计提供可靠的稳定性评估与补偿网络设计依据。

weixin_29276847的博客 528

HashMap常见面试题

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>> ...

JaneRoad 367

从可用性到情感共鸣:构建下一代人机交互的智能伙伴

本文探讨了人机交互从功能满足到情感共鸣的范式转变,分析了情感计算的三大技术支柱——多模态感知网络、上下文感知引擎和情感生成模型,并展示了医疗健康、教育领域和智能家居等垂直场景的落地实践。文章还提出了设计下一代交互系统的五个原则,为构建更智能、更具情感共鸣的人机交互伙伴提供了实用指导。

weixin_29073241的博客 245

Java基础(二)Java集合

HashMap 的长度选择为 2 的幂次方是为了在计算哈希值映射到数组位置时采用位运算,这样可以提高效率。**利用位运算:**当长度为 2 的幂次方时,计算哈希值映射到数组位置可以用位运算来代替取模运算,如 (hash & (length - 1))。而位运算相比取模运算的性能更高,因此可以提高速度。**均匀分布:**哈希值的低几位可以保留原始哈希值的信息,而高位被舍弃,因此,对于不同的哈希值,它们在低几位的概率分布是均匀的。这样可以减少哈希冲突的发生,提高散列均匀性。

伟伟_爱撒娇的博客 1785

【遥感数字图像处理(朱文泉)】各章博文链接汇总及思维导图

遥感数字图像处理(北京师范大学朱文泉教授)课程各章博文笔记汇总,及各章节思维导图

甜子yu的博客 2624

【verilog语法详解:从入门到精通】

Verilog语法详解:从入门到精通 摘要:本文系统讲解Verilog硬件描述语言的核心语法与应用。Verilog作为数字电路设计标准,具有并行执行、硬件映射和层次化三大特点。文章从基础语法框架入手,详细介绍了模块定义、端口类型(input/output/inout)声明规范,以及线网型(wire)和寄存器型(reg)两种核心数据类型的区别与应用场景。重点讲解了组合逻辑(assign连续赋值)和时序逻辑(always块)的实现方式,包括阻塞赋值(=)与非阻塞赋值(<=)的关键差异。此外,还涵盖了参数(

m0_58476824的博客 4687

Java基础(二)集合

集合和链表

qq_44094798的博客 475

RK3568平台开发系列讲解(DMA篇)DMA engine使用

DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。DMA_PREP_PQ_DISABLE_P、DMA_PREP_PQ_DISABLE_Q、DMA_PREP_CONTINUE,PQ有关的操作,TODO。

内核笔记 1725

【集合】JAVA基础篇(二)

集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口。

一名后端程序猿 983

(二)OpenClaw-连接即时通讯平台-集成飞书完整配置指南

本文详细介绍了如何将OpenClaw与飞书机器人对接,实现通过飞书聊天窗口下达指令自动执行任务的高效协作模式。主要内容包括:1)OpenClaw服务部署验证和飞书账号准备;2)在飞书开放平台创建企业自建应用、添加机器人能力、获取凭证和开通必要权限;3)OpenClaw服务端的首次配置,包括设置飞书通道参数和启动长连接。文章提供了完整的操作步骤和截图指引,帮助用户快速完成对接配置,实现AI自动化助手功能。

直到世界的尽头 2251

lammps后处理:ovito选择原子高级技巧讲解

大家好,我是小马老师。 本文介绍如何在ovito中使用公式(Expression)选择需要的原子。 用ovito查看lammps模拟结果时,可能会遇到选择特定原子的情况,比如选择坐标位于一定范围内的原子,或者选择结构为fcc的原子等等。 这时候,就需要用到expression selection功能。 Expression selection功能比较强大,下面分别介绍几种选择原子的方法。 在输入公式前,先点击“Add modification”->"Expression selection"选项,在B

lammps_jiayou的博客 2万+

[JAVA]基础(二)集合

说说Java中常见的集合吧 Java中的常见集合可以概括如下: Map接口和Collection接口是所有集合框架的父接口 Collection接口的子接口包括:Set接口和List接口 Map接口的实现类主要有:HashMap、TreeMap、Hashtable LinkedHashMap、ConcurrentHashMap以及Properties等 Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等 List接口的实现类主要有:ArrayList、LinkedLis

weixin_44417042的博客 1070

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5099

二、Java基础知识-集合

为了能让 HashMap 存取高效,尽量较少碰撞,也就是要尽量把数据分配均匀。我们上面也讲到了过了,Hash 值的范围值-2147483648到2147483647即(-2的31次方 ~ 2的31次方-1),前后加起来大概40亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位置也就是对应的数组下标。

落日的博客 1317

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Java基础】集合总结(二)——Set集合、List集合

一、Set集合 Set接口是Collection的子接口,Set接口没有提供额外的方法。 Set集合不能记住元素的添加顺序,不允许包含重复元素。如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。 (一)HashSet类 1、HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。 2、特点: 不能...

心似烟火 341

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java基础-集合篇二

java集合类型的排序: 1、如果需要将TreeSet集合或Treemap集合内的可以元素进行排序,有两种实现方式: 第一种:实现Comparable接口。 自定义类型排序: (像Integer、String等类型都已实现了Comparable接口,不需要程序员手动编写排序规则) class A implements Comparable《A》{ int age; public A() { } public A(int age) { this.age = age; } @Overrid

m0_46495219的博客 594

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java语法基础二:集合框架

Java的集合框架核心架构、核心接口与实现类、以及实际应用和具体选择建议

Xyuan的博客 860

Java基础——单列集合(二)

HashSet集合底层采用哈希表存储数据哈希表是一种对于增删改查数据性能都较好的结构哈希表组成:JDK8之前:数组+链表JDK8开始:数组+链表+红黑树链表和红黑树都是为了解决哈希冲突而存在的。

2301_79368422的博客 706

Java基础学习(二) 集合

一、集合的由来   通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 二、集合是什么  ...

哈哈耙的博客 342

JAVA基础之集合(二)

学习Collection接口中常用的方法(java.util.Collection) 1:Collection中能存放什么元素? 没有使用“泛型”之前,Collection中可以存储Object的所有子类型。 使用了“泛型”之后,Collection中只能存储某个具体的类型。 集合中不能直接存储基本类型,也不能存储java对象,只是存储java对象的内存地址。 2:Collection中的常用方法 boolean add(Object a); import java.util.ArrayList; impo

weixin_43747748的博客 199

Java面试基础二——集合相关

                               Java面试基础二——集合相关 文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍 1.add与addAll 如果有多个已经被实例化的List 集合,想要把他们组合成一个整体,并且,这里必须直接使用List 自身提供的一个方法List.addAll(...

weixin_42248302的博客 167

Java基础——Java集合②

需求:创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历。(5)遍历集合(键找值、键值对对象找键和值)案例:HashMap集合存储学生对象并遍历。(2)创建HashMap集合对象;(4)把学生添加到集合;(3)创建学生对象;

神枪达的博客 76

java基础(二)集合

先简单的看下思路结构:    1.Collection  集合父接口之一        集合用来存放数据,在我看来集合就是更方便的数组。集合中可以存放任意类型的数据,而且长度可变,相比数组更加的灵活和便捷。       (1) Collection接口中定义的方法:add(Object obj):可以存储任何引用类型add(int index,Object obj):插入元素toString():...

Cherry_lzy的博客 318

java基础——————集合框架《二》

——-android培训、java培训、期待与您交流! ———- Map集合 Map 集合 和 Collection 集合的区别 : a: map集合是双列集合,Collection集合是单列集合 b: map集合的数据结构只针对键有效 , Collection集合的...

地狱里的帅灵魂 484

Java基础 集合(二)List详解

Java基础 集合(二)List详解:ArrayList、LinkedList、Vector和Stack。

A乐神的博客 1523

Java基础学习——Java集合(二)引入集合

一、为什么要使用集合 数组的优缺点 优点 1)通过下标访问元素的效率很高,指定下标为n的元素的地址:首地址*元素类型字节数 2)数组可以保存若干个元素的值。 缺点 1)数组长度定义后不能改变 2)数组进行元素的删除和插入操作的时候,效率比较低。需要移动大量的元素,例如a[10000],删除a[0],后面9999个元素都要向前移动一位 3)数组类型定义后只能存放该类型的数据 4)数组通过内容查找元素的效率比较低的 5)数组实际元素的数量无法获取,比如定义一个数组为a[10000],往里面添

skx1102195517的博客 278
上一篇: Java基础总结一(概述、基础知识)
下一篇: Java基础总结三(泛型、异常)
<天各一方>
博客等级 码龄6年 17粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值