常用的集合类型如ArrayList,HashMap,HashSet等,在并发环境下修改操作都是线程不安全的,会抛出java.util.ConcurrentModificationException异常,这节主要记录如何在并发环境下安全地修改集合数据。List举个ArrayList线程不安全的例子:public class CollectionTest {public static void main(String[] args) {List<String> data = new ArrayList<>();IntStream.range(0, 30).forEach(i -> new Thread(() -> data.add(String.val...
集合: 存储对象数据的集合容器。一、单列集合----------| Collection 单例集合 的根接口----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。---------------------| ArrayList ArrayList底层是使用了Object数组实现 的。 特点: 查询速度快,增删慢。---------------------| LinkedList LinkedList底层是使用了链表数据结构实现的。特点: 查询速度慢,增删快---------------------| Vector 底层是...
一、队列 queue常用方法: 二、List 三、Set 四、Map 原文:https://www.cnblogs.com/yangfei629/p/13081677.html
Vector: 底层也是维护了一个Object数组,实现与ArrayList是一样的, 但其线程是安全的,效率低。除了比较老的系统,是不会用到的。笔试题:ArrayList 和 Vector 的区别。相同点:都是底层维护了一个Object数组。(看源码)不同点:ArrayList 是线程不同步地,操作效率高。(1.2)后来代替了Vector Vector 线程同步的,操作效率低。(1.0) 原文:http://www.cnblogs.com/lifehrx/p/5797057.html
1. Map集合的遍历(键值对对象找键和值)Map -- 夫妻对 思路: A: 获取所有结婚证的集合 B: 遍历结婚证的集合,得到每一个结婚证 C: 根据结婚证获取丈夫和妻子转换: A: 获取所有键值对对象的集合 B: 遍历键值对对象的集合,得到每一个键值对对象 C: 根据键值对对象获取键和值 2. 代码示例: 1package cn.itcast_01;2 3import java.util.HashMap;4import java.util.Map;5import java.util.Set;6 7/* 8 * 看看我们开始的一个方...
集合与数组的区别: 1.数组是固定长度的;集合的长度是可变的。 2.数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 3.数组存储元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。 java集合主要有3种重要的类型: ●List:是一个有序集合,可以存放重复的数据。 ●Set: 是一个无序集合,不允许存放重复的数据。 ●Map: 是一个无序集合,集合中包含一个键对象和一个值对象, 键对象不...
百度java 集合图时,搜出来一张图,图的蛮不错的,现在借用一下。图片来自:http://blog.csdn.net/bondsui/article/details/8520078原文:http://blog.csdn.net/itismelzp/article/details/50554921
对于两个数组arr1=[1,3,4,5,8,9]arr2=[2,3,7,8,9]求出交集与并集test.java 1import java.util.ArrayList;2import java.util.Collections;3 4 5publicclass test1 {6publicstaticvoid main(String[] args) {7 ArrayList<Integer> tmplist=new ArrayList<Integer>();8int[] arr1={1,3,4,5,8,9};9int[] arr2={2,3,7,8,9}; 10 tmplist=Intersection(arr1,arr2); 11 OutPut(tmplist); 12 tmplist.clear(); 13 tmplist...
List接口:可以存放重复内容;set接口:不能存放重复内容,重复内容依靠hashcode和equal两个方法来区分;Queue:队列;SortedSet接口:对集合中的数据进行排序; List接口:List子类:ArrayList,VectorArrayList和Vector的区别:LinkedList类和queue接口LinedList 链表的操作类Queue接口是Collection的子接口 Set接口:Set接口是collection接口的子接口,但是和Collection或者List接口不同的是:set不能加入重复元素。set的主要方法...
1.LinkedList是什么?有什么特点 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。Linke...
实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也...
什么是Queue集合:Queue用于模拟队列这种数据结构,队列通常是“先进先出”(FIFO)的容器。队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素。 Queue接口定义了如下几个方法:void add(Object e):将制定的元素加入队列的尾部Object element(): 获取队列的头部元素,但不要删除改元素boolean offer(Object e): 将制定元素加入此队列的尾部。当使用有容量限制的队列的时候,该方法比add方法更好Object peek(...
HashMap和Hashtable之间的区别步骤 1 : HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式 区别1: HashMap可以存放 null Hashtable不能存放null 区别2: HashMap不是线程安全的类 Hashtable是线程安全的类package collection;import java.util.HashMap; import java.util.Hashtable;public class TestCollection {public static void main(String[] args) {//HashMap和Hashtable都实现了Map接...
之前介绍了Java并发的基础知识和使用案例分析,接下来我们正式地进入Java并发的源码分析阶段,本文作为源码分析地开篇,源码参考JDK1.8OverView: JDK1.8源码中的注释提到:ConcurrentHashMap是一种提供完整的并发检索和对于并发更新有高预测性的散列表,遵循了与HashMap相同的功能性规格,并包含与HashTable每个方法都对应的方法.虽然所有操作都是线程安全的,但检索操作并不牵涉任何锁,不支持任何锁住整个散列表来保护所有的访问. ...
存储对象可以考虑:数组,集合 数组存储对象特点:Student[] stu = new Student[23]; str[0] = new Student();... 弊端:1.一旦创建,其长度不可改变 2.真实的数组存放的对象的个数是不可知的Java集合可分为Collection和Map两种体系: Collection接口: List接口:有序的,可重复元素 相当于“动态”数组 添加进List集合中的元素(或对象)所在的类一定要重写equals()方法; |---Ar...