Java连载149-集合类小节

一、Collection和Collections之间的区别

  • Collection是一个接口类,是Set和List接口的父接口
  • Collections是一个工具类,是不应该初始化为一个对象,内部含有很多对集合操作的静态方法

二、Set和List之间的区别

  • Set和List都是接口,但是各有不同
  • Set是一个无序集合,对于放入的元素是不能重复,可以用于进行去重
  • List是一个有序集合,按照先进先放的原则

三、ArrayList\LinkedList\Vector之间的区别

  • ArrayList的底层是一个数组;它的初始容量很小,没有指定容量的话,自动扩容为原来size的1.5倍;我们需要的空间很大的时间,可以手动给它一个初始的容量;内部含有get()和set()方法用于对元素进行检索等等;这是一个线程不安全的List
  • Vector的底层也是一个数组;它的初始容量很小,没有指定容量的话,自动扩容为原来size的2倍;我们需要的空间很大的时间,可以手动给它一个初始的容量;这是线程安全的List
  • LinkedList的底层是一个 双向 链表,因此对于新增或者删除元素的时候具有较好的性能;这也是一个线程不安全的List.

注意:ArrayList内部是用了transient进行优化,内部代码中writeObject()方法中,仅存储了非null的元素,而Vector则是存储了所有的元素,因此在内容相同的情况下,Vector所占的空间是比ArrayList大的; 从某种意义上来讲,ArrayList是在当线程下的一种优化了的存储方法,Vector则是利用synchronnized进行同步,保证了线程安全。

四、一种扩容的代码

<span class="hljs-keyword">int</span>&#xA0;oldCapacity&#xA0;=&#xA0;<span class="hljs-number">5</span>;<br><span class="hljs-keyword">int</span>&#xA0;newCapacity&#xA0;=&#xA0;oldCapacity&#xA0;+&#xA0;(oldCapacity&#xA0;<< <span class="hljs-number">1);&#xA0;<br></ <span>

五、SynchronizedList和Vector之间的区别

  • 先说使用方法;
  • 在多线程的情况下,可以直接使用Vector来构造一个线程安全的List来进行使用
  • SynchronizedList是Collections的一个内部类,我们可以这样使用它
List&#xA0;list1&#xA0;=&#xA0;<span class="hljs-keyword">new</span>&#xA0;ArrayList();<br>SynchronizedList&#xA0;list&#xA0;=&#xA0;Collections.synchronizedList(list1);
  • 二者之间的区别在于,Vector是使用同步方法的形式,SynchronizedList是使用了一个同步代码的块的形式。

六、源码:

Original: https://www.cnblogs.com/ruigege0000/p/15627167.html
Author: 心悦君兮君不知-睿
Title: Java连载149-集合类小节

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607922/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基于css的一些动画

    最近因为期末复习周,博客更新鸽了很久,趁着考完试还记得这件事,把之前的大作业里出现过的css动画总结一下 这个图片原型是一个静态图 动画效果如下 .footer{ backgrou…

    Java 2023年6月8日
    083
  • 设计模式之策略模式

    在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的…

    Java 2023年6月8日
    0103
  • Nginx_配置

    index.html 我Nginx配置下载地址:location /download {alias usr/share/nginx/html/cc/temp}这样我请求www.xx…

    Java 2023年5月30日
    069
  • MYSQL8.0-JSON函数简单示例-JSON_EXTRACT|JSON_VALUE|JSON_TABLE

    JSON类型在日常应用开发中,用得很少,个人通常用于存储常常变化的配置参数。 它适用于什么业务场景,不好说。就好像许多年前读到的一篇文章,说有个国外公司利用ORACLE的CLOB/…

    Java 2023年6月9日
    086
  • Java—Stream进阶

    由于本文需要有一定的Stream基础,不懂什么是Stream的同学请移步:Java—Stream入门 操作分类 graph LR 操作分类 — 中间操作 终…

    Java 2023年6月7日
    085
  • Sharepoint 2013 系列篇(安装部署)–上篇

    前言 sharepoint的部署是按照物理拓扑图的架构来部署,按照物理拓扑图架构分为一层拓扑图架构,二层拓扑图架构,三层拓扑图架构,多层拓扑图架构。 按照分层的拓扑图部署是按照需求…

    Java 2023年6月7日
    099
  • 线程同步

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    064
  • Java-个人杂记

    on duplicate key update MYSQL特有语法,当INSERT已经存在的记录时,执行UPDATE INSERT INTO TABLE_NAME (column1…

    Java 2023年6月8日
    095
  • java核心技术巩固笔记

    前言 基础知识 高级特性 posted @2022-03-17 10:49 侯小厨 阅读(28 ) 评论() 编辑 Original: https://www.cnblogs.co…

    Java 2023年5月29日
    082
  • Java的jmap命令使用详解

    jmap命令简介 jmap(Java Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,…

    Java 2023年6月7日
    0153
  • idea控制台

    快捷键:alt + 4 本文来自博客园,作者:紫英626,转载请注明原文链接:https://www.cnblogs.com/recorderM/p/15991828.html O…

    Java 2023年6月5日
    0110
  • 【最新版】30分钟教你搭建属于自己的个人博客

    【最新版】30分钟教你搭建属于自己的个人博客 简介: 本教程是以Hexo和Coding pages 为基础,搭建个人的静态博客网站 Hexo Hexo官网 快速、简洁且高效的博客框…

    Java 2023年6月8日
    0101
  • TCP/IP和UDP

    TCP/IP即传输控制/网络协议,是面向连接的协议,发送数据前要先建立连接(发送方和接收方的成对的两个之间必须建 立连接),TCP提供可靠的服务,也就是说,通过TCP连接传输的数据…

    Java 2023年6月13日
    079
  • VS2017 打开WebService 提示已经在解决方案中打开了具有该名称的项目

    .net开发。用VS2017工具,打开VS2010创建的WebSevice工程时,提示工程不可用。 重新加载后提示:已经在解决方案中打开了具有该名称的项目。 该问题原因是因为启用了…

    Java 2023年6月8日
    075
  • 异常

    异常的处理方式: 1.JVM处理 JVM处理异常的过程: ​ 1).打印异常的信息 2).显示出异常的位置 3.)停止了程序 2.自己处理 try{}catch{}finally{…

    Java 2023年6月8日
    0131
  • nginx代理实现https访问阿里云oss资源

    2022年4月29日 起因:买了阿里云的oss, 5年50块钱40G, 也够我自己用了,但是我自己的网站是https的,要想加载阿里云的oss图片资源也得是https的才行 方案一…

    Java 2023年5月30日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球