1 import java.util.HashMap;2 import java.util.Scanner;3 import java.util.Set;4 5 public class MapTest {6 public static void main(String[] args) {7 Scanner scanner = new Scanner(System.in);8 //键盘录入字符串9 System.out.println("请输入一串字符"); 10 //创建字符串对象,存储键盘输入的值 11 String line = scanner.nextLine(); 12 //创建HashMap集合,键是c...
类加载器的流程: 我自己记忆的一个快速方法:lvpriuu。含义是:load(加载),verify(验证),prepare(准备),resolve(解析),initialize(初始化),use(使用),unload(卸载) 加载 类加载完成的三件事情: 1.通过一个类的全限定名来获取定义此类的二进制字节流。 2.将这个字节流所表示的静态存储结构转化为方法区的运行时数据结构。 3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。 注意...
集合:一种容器,用来存储多个数据。数组也是容器。但是长度是固定的,集合长度是可变的。数组可以存储基本类型(只能是同一个类型),也可以存储对象。集合存储的都是对象,而且对象的类型可以不一致。
总结 ArrayList 和Vector默认加载因子都是1(元素满了才扩展容量).默认容量都是10;但是ArrayList 在jdk1.8时默认为空,当添加元素时,才初始化为10个容量。 ArrayList 默认初始容量为10,(jdk8的时候底层Object[] elementData数组初始化为{},并没有创建长度为10的数组。在add元素时才创建了10个容量。) 线程不安全,查询速度快 底层数据结构是数组结构 扩容增量:原容量的 0.5倍,新容量为原容量的1.5倍。 ...
1、 你都知道哪些常用的Map集合? HashMap、HashTable、LinkedHashMap、ConcurrentHashMap。 2、Collection集合接口和Map接口有什么关系? 没关系,Collection是List、Set父接口不是Map父接口。 3、HashMap是线程安全的吗?线程安全的Map都有哪些?性能最好的是哪个? HashMap不是线程安全的。线程安全的有HashTable、ConcurrentHashMap、SynchronizedMap,性能最好的是ConcurrentHashMap。 4、使用HashMap有什么性能问题吗? 使用H...
我在之前两讲介绍了 Java 集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如 Vector、Stack,在性能方面也远不尽如人意。幸好 Java 语言提供了并发包(java.util.concurrent),为高度并发需求提供了更加全面的工具支持。 今天我要问你的问题是,如何保证容器是线程安全的?ConcurrentHashMap 如何实现高效地线程安全?典型回答 Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashta...
因为Arraylist集合的代码实现,是数组。(大小可变的数组)所以视频中,有许多程序员 开发时非常随意地使用ArrayList完成,任何需求。并不严谨,因为ArrayList的实现是数组,是查找快,增删慢。如果需求是增删比较多的话,使用集合选择ArrayList是不太合适。那么,C#中有这样的集合区别嘛?
1、ArrayList/*** 集合类不安全问题* 1、故障现象:* java.util.ConcurrentModificationException(并发修改异常)* 2、解决方案* 3.1、new Vector<>();* 3.2、Collections.synchronizedList(new ArrayList<>());* 3.3、new CopyOnWriteArrayList<>();//写时复制*/ public class ContainerNotSafeDemo {public static void main(String[] args) {List<String> list = new ArrayList<>();for (int i = 1; i <= ...
有时候需要存储一组数据,之前使用数组,但是数组具有固定的容量,但是在写程序时并不知道需要多少对象,在java.util包下提供了一套完整的集合类,包含List、Set、Queue、Map。java集合类都可以自动地调整自己的大小。 在创建集合时,经常使用泛型,可以在编译期防止将错误的类型放入到集合中。 集合概念 集合分为两个基本接口集合(Collection):一个独立元素的序列,List必须已插入顺序保存元素,Set不能包含重复元素,Queue按照排...
集合中Set接口、数据结构 .Set接口实现类HashSetHashSet的特征LinkedHashSetTreeSet 自然排序 数据结构哈希表哈希冲突散列算法二叉树.Set接口 特点:无序、不允许重复,是Collection接口的子接口 没有定义新方法,所有的方法都是Collection接口中所定义的方法 实现类 HashSet存储采用哈希表的方式进行存储,HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能 LinkedHashSet是在HashSet的基础上添加一个额...
集合概述 一、List接口有序的集合(存储和取出元素的顺序相同) 允许存储重复的元素 有索引,可以使用普通的for循环遍历Vector集合:不建议使用,该集合里面的方法都是同步的,效率慢,已经被ArrayList取代 ArrayList集合:查询数据比较快,但添加和删除数据比较慢,底层基于数组实现 LinkedList集合:查询数据比较慢,但添加和删除数据比较快,底层基于双向链表实现二、Set接口不允许存储重复的元素 没有索引,不能使用普通的for循...
转载:https://www.liaoxuefeng.com/wiki/1252599548343744/1265120632401152 我们知道,Queue是一个先进先出(FIFO)的队列。 在银行柜台办业务时,我们假设只有一个柜台在办理业务,但是办理业务的人很多,怎么办? 可以每个人先取一个号,例如:A1、A2、A3……然后,按照号码顺序依次办理,实际上这就是一个Queue。 如果这时来了一个VIP客户,他的号码是V1,虽然当前排队的是A10、A11、A12……但是柜台下一个呼叫的客户号码却是...
JAVA 集合框架总览 1,集合框架概述集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。数组与集合的区别如下:数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。 数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。2,Java集合常见接口及实现类 1)List List集合代表...
java学习阶段一 集合 介绍 应用场景 长度动态改变 储存有一对一关系 需要增删 不允许数据重复 基本知识集合体系 Collection 储存类和对象List 允许重复 有序 实现类:ArrayList Queue 允许重复 有序 实现类:LinkedList Set 不允许重复 无序 实现类:HashSetMap 储存键值对实现类 HashMap具体ArryList 适合查找和更新元素 不建议列表中间操作 List 对象名 = new ArrayList();//添加对象 对象名.add();//添加 对象名.remove();//删除...
这里我们通过多态来学习Collection接口常用方法 记得为Collection指定一个泛型是很好的习惯 Collection<Integer> collection=new ArrayList<>();01添加方法collection.add(1);可以多添加几个 collection.add(1); collection.add(1); collection.add(2); collection.add(3);02集合清空方法 collection.clear();03判断包含方法 返回一个布尔类型变量 boolean b = collection.contains(3);04集合判空方法 返回一个布尔类型变量 boolea...