java arraylist 初始化_Java面试整理-基础篇8.集合1
1.Java中常见的集合及其关系?
2.ArrayList、LinkedList、Vector的区别?
1. LinkedList、ArrayList、Vector都是List接口的子类;LinkedList基于双向链表实现,ArrayList、Vector基于数组实现。
2. ArrayList采用懒加载模式,在第一次添加元素时,初始化内部数组,初始大小为10,扩容大小为原先为1.5倍,采用异步处理,线程不安全,性能较高,在大部分场景下适用。
3. Vector在产生对象时,初始化一个大小为10的内部数组、扩容为原先的2倍,采用synchronized修饰常用的crud方法,线程安全,性能较低(读读互斥)。
4. ArrayList和LinkedList由于实现原理的不同(双向链表和数组),常见的插入删除在尾部时使用ArrayList比较快,在指定位置的时候使用LinkedList。
3.通过Collections.SynchornizedList、Vector的区别?
1. 通过Collections.synchronizedList()方法可以将线程不安全的List转成线程安全的List。
2. Collections.SynchronizedList使用了委托(delegation),实质上存储使用的是构造时传入的list,只是将list作为底层存储。Collections.SynchronizedList使用synchronized代码块对mutex对象加锁,mutex对象可以通过构造函数传入,也就是可以指定锁定的对象。
3. Vector则是对整个方法使用了synchronized,所以不能对同步进行细粒度的控制。而且同步方法加锁的是this对象,没办法控制锁定的对象。
4. 由于Collections.SynchronizedList比Vector多了一层封装,所以Vecgor比Collections.SynchronizedList的效率略高。
4.Set和List的区别?
1. List允许插入重复的元素,Set不允许重复元素。
2. List是有序集合,会保留元素插入时的顺序,Set是无序集合。
3. List可以通过下标来访问,Set不能。
5.Set是如何保证元素不重复的?
Set根据实现方式主要分为两大类,HashSet和TreeSet。
1. HashSet是由哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。
2. TreeSet是由二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值。
6.Collection和Collections的区别
1. java.util.Collection是一个集合接口(集合类的顶级接口)。提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
2. Collections则是集合类的一个工具类,提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
7.Arrays.asList获得的List使用时有什么需要注意的?
1. 在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException。因为Arrays.asList()返回的是java.util.Arrays$ArrayList而不是ArrayList。
2. Arrays$ArrayList和ArrayList都继承AbstractList,而remove,add等method在AbstractList中默认实现仅有`throw new UnsupportedOperationException();`而不做其他处理。ArrayList继承AbstractList后重写(override)了这些方法,而Arrays$ArrayList则是保留了默认实现抛出java.lang.UnsupportedOperationException。## 附言
* 转载请注明出处
* 更多文章,请关注公众号《百育科技》,公众号会定期按系列整理文章
java arraylist 初始化_Java面试整理-基础篇8.集合1相关推荐
- java如何把查到的对象集合放入 展示对象list中_Java面试整理-基础篇8.集合1
1.Java中常见的集合及其关系? 2.ArrayList.LinkedList.Vector的区别? 1. LinkedList.ArrayList.Vector都是List接口的子类:Linked ...
- java list 初始化_Java面试大全(十)
第五章 Java 的高级 1.说说你对 Java 中反射的理解 Java 中的反射首先是能够获取到Java 中要反射类的字节码,获取字节码有三种方法:1. Class.forName(classNam ...
- jqGrid 学习笔记整理——基础篇
jqGrid 学习笔记整理--基础篇 jqGrid 实例中文版网址:http://blog.mn886.net/jqGrid/ 国外官网:http://www.trirand.com/blog/ 本人 ...
- Java面试基础篇之集合
文章目录 你知道的集合都有哪些? 哪些集合是线程安全的? Collection 集合类和数组有什么不同? Collection和Collections有什么区别? 如何确保一个集合不能被修改? Lis ...
- 十一郎专栏 | java面试八股文-基础篇
最近发现全网都在找八股文,看来最近面试的人真的很多. 铁汁们对于面试八股文的需求很大,但是资料是这里凑一点那里凑一点,不够系统化. 我根据自己的面试经验,以及拉了几个大佬+面试官讨论了一下,基础篇就出 ...
- java arraylist 构造_Java基础五:构造方法、ArrayList
Java的构造方法 面向对象:属性和方法,当对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值 构造方法的格式: 修饰符 构造方法名(参数列表){方法体} 写法: 1.方法名与他所在 ...
- Java全链路复习面经-基础篇(2.5万字全文)
序言 主要分为两篇,一篇基础篇,涵盖Java基础,数据库,JVM,计算机网络等知识 另一篇为框架篇,主要为流行框架,如Spring.SpringMVC.Mybatis.SpringBoot.Sprin ...
- 资料搜集-JAVA系统的梳理知识5-JAVA基础篇JVM
<!-- TOC -->- [Collections 工具类和 Arrays 工具类常见方法](#collections-工具类和-arrays-工具类常见方法)- [Collection ...
- SpringBoot系统整理|基础篇|黑马视频
写在前面:很早之前看了狂神的springboot快速入门,后来发现还是有很多开发知识点需要补充学习.乘着假期,将基础篇.运维实用篇.开发实用篇.原理篇一口气学习巩固,再次记录下学习笔记.系列笔记在sp ...
最新文章
- linux搭建vsftpd虚拟用户访问
- python3 redis操作 错误 cannot import name 'StrictRedis' from 'redis'
- Javascript数组操作方法
- android手势滑动——左右滑动效果实现
- [Dubbo实战]dubbo + zookeeper + spring 实战 (转)
- Qt Creator在外部应用程序上运行Valgrind工具
- Oracle查看死锁 .
- elasticsearch客户端介绍
- 快速上手sqlserver profiler
- 学习Raft算法的笔记
- 论文浅尝 - ACL2020 | 一种用于关系三元组提取的级联二进制标记框架
- 固定布局(fixed layout)、流体布局(fluid layout)、弹性布局(elastic layout)、响应布局(responsive layout)理解和技巧归纳
- JS Math对象(算数、四舍五入、随机数)
- 前端开发在uc浏览器上遇到的坑
- Python(四):字符串
- 信号系统与数字信号处理一点点心得
- 富士康计划豪掷4000万美元投资美国制造业
- display的contents属性
- 终于放假咯~寒假规划
- 国产折叠屏手机:华为领航,跟随者众
热门文章
- Linux信号实践(4) --可靠信号
- Objective-C初学者指南(第2版)
- MySQL超简单安装方法,一条命令就搞定
- Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php
- android中如何执行java命令
- mysql增备脚本--xtrabackup实现
- 信息学奥赛一本通 1064:奥运奖牌计数 | OpenJudge NOI 1.5 07
- 信息学奥赛一本通(1135:配对碱基链)
- 生日蛋糕(信息学奥赛一本通-T1441)
- C++语言基础 —— STL —— 容器与迭代器