首页 > 编程语言 >【Java】Java基础知识点之集合类型基础概念

【Java】Java基础知识点之集合类型基础概念

时间:2022-11-10 23:42:27浏览次数:48  
标签:知识点 Set Java LinkedList Map ArrayList 元素 基础 synchronizedList

Java常用集合有哪些?

Java集合类主要由两个接口Collection和Map派生出来的。 Collection有三个子接口:List、Set、Queue

List代表了有序可重复集合,可直接根据元素的索引来访问; Set代表无序不可重复集合,只能根据元素本身来访问; Queue是队列集合。

Map代表的是存储key-value对的集合,可根据元素的key来访问value。 集合体系中常用的实现类有ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类。 List 、Set和Map 的区别List以索引来存取元素,有序的,元素是允许重复的,可以插入多个null;

Set 不能存放重复元素,无序的,只允许一个null; Map 保存键值对映射; List 底层实现有数组、链表两种方式; Set、Map 容器有基于哈希存储和红黑树两种方式实现; Set 基于 Map 实现,Set 里的元素值就是 Map的键值。

ArrayList 的扩容机制?

ArrayList扩容的本质就是计算出新的扩容数组的size后实例化,并将原有数组内容复制到新数组中去。 默认情况下,新的容量会是原容量的1.5倍。

Arraylist 与 LinkedList的区别?

ArrayList基于动态数组实现;LinkedList基于链表实现。对于随机index访问的get和set方法,ArrayList的速度要优于LinkedList。因为ArrayList直接通过数组下标直接找到元素;LinkedList要移动指针遍历每个元素直到找到为止。新增和删除元素,LinkedList的速度要优于ArrayList。因为ArrayList在新增和删除元素时,可能扩容和复制数组;LinkedList实例化对象需要时间外,只需要修改指针即可。

多线程场景下如何使用 ArrayList?

ArrayList 不是线程安全的,如果遇到多线程场景,可以通过 Collections 的 synchronizedList 方法将其转换成线程安全的容器后再使用 代码实例

	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,Java,LinkedList,Map,ArrayList,元素,基础,synchronizedList
From: https://blog.51cto.com/u_15312559/5842318

相关文章

  • Android中Java和JavaScript交互
    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。如何实现......
  • Head First Java 读书笔记
    第11章:异常处理如果你把有风险的程序代码包含在try/catch块中,那么编译器会放心很多。try/catch块会告诉编译器你确实知道所调用的方法会有风险,并且也已经准备好要处理......
  • Linux——文件传输协议知识点梳理
    接触过Linux操作系统的同学一定对文件传输协议并不陌生,因为在Linux操作系统里我们对文件的上传下载通常不会像我们操作window系统那么直观,一般都是通过文件传输协议去完成......
  • Java的用法
    Java支持以下三种注释方式:1、单行注释以双斜杠“//”标识,只能注释一行内容,用在注释信息内容少的地方。打开Eclipse,在Java代码中使用单行注释,如图所示。2、多行注释包......
  • Study Notes 之 回顾 HTML 基础
    LZ-Says:终于明白了鸡大说的,技术,沉淀,所谓的孤寂以及背后的坚持。比心,祝好~前言搞前段也搞了有一段日子,感觉嘛,还好。还是有很多的属性,有点蒙,写起来还是不能行云流水。大佬说......
  • JAVA线程池管理及分布式HADOOP调度框架搭建
    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头。怎么做......
  • 定义一个Java类,用来描述订单,属性自定义
    示例代码packagecom.powernode.oo;publicclassOrder{/***名称*/privateStringname;/***订单标识*/privateStrin......
  • Http基础协议
    浏览器请求方法http1.0定义了三种:GET:向服务器获取资源,比如常见的查询请求POST:向服务器提交数据而发送的请求Head:和get类似,返回的响应中没有具体的内容,用于获......
  • Java学习——11.10
    今天得时间都花在数学和英语上了,Java的话就只看了一点对象和内存的关系,但我觉得够了。这章虽然狂神讲的很浅,又因我没怎么学过数据结构,于是我又从CSDN上看了点。下面来......
  • 第2章 C#语言基础
    2.1第一个C#程序usingSystem;//导入命名空间namespaceTest{//命名空间internalc......