首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏拭心的安卓进阶之路

    Java 集合深入理解(7):ArrayList

    什么是 ArrayList ArrayList 是 Java 集合框架中 List接口 的一个实现类。 capacity 5.数组最大容量: private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; Integer.MAX_VALUE = 0x7fffffff = 0; } //在指定位置,添加一个集合 public boolean addAll(int index, Collection<? 下次使用时就不用重新 new 了 for (int i = 0; i < size; i++) elementData[i] = null; size = 0; } 7. IndexOutOfBoundsException ex) { throw new ConcurrentModificationException(); } } } 在 Java

    1K70发布于 2018-01-05
  • 来自专栏技术杂货店

    java集合7】-- List接口源码解析

    1.List接口的特性 java.util.List 接口继承于 Collection 接口,与Map最大的不同之处,在于它属于单列集合,相当于一个列表,有以下这些特点: 有顺序,按照添加的顺序存储, private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ // = 0; } 指定index,插入一个集合,和前面不一样的地方在于复制之前,需要计算往后面移动多少位,不是用for循环去插入,而是一次性移动和写入。 But ListIterator has been introduced with Java 1.2. 中文就是: 因为Java 5可以用更特定的返回类型(称为协变返回类型)重写方法。但是ListIterator是在Java 1.2中引入的。

    82300发布于 2020-11-21
  • 来自专栏指点的专栏

    Java 集合框架(7)---- Set 相关类解析

    关于 HashMap 的运行机制,可以参考之前的文章:Java 集合框架(5)---- Map 相关类解析(中) TreeSet 这个类可以使得添加进入 Set 集合中的元素按照某种规则来排序,但是其并不是直接实现 关于 TreeMap 可以参考:Java 集合框架(5)---- Map 相关类解析(中) 。 <E>, Cloneable, java.io.Serializable { /** * The backing map. 关于其运行元素可以参考 Java 集合框架(6)---- Map 相关类解析(下) 。 在下一篇文章中我们将一起对整个 Java 集合框架做一个总结,也算是深入 Java 集合框架的系列的一个结束篇吧。

    67230发布于 2019-01-18
  • 来自专栏JavaEdge

    Java 集合源码解析 - ConcurrentHashMap(JDK7

    ConcurrentHashMap是线程安全且高效的HashMap 1 为什么要使用ConcurrentHashMap 线程不安全的HashMap HashMap是Java中最常用的一个Map类,性能好 ConcurrentHashMap 摒弃了单一的 map 范围的锁,取而代之的是由 16 个锁组成的集合,其中每个锁负责保护 hash bucket 的一个子集。 来保护不同段的数据,在插入和获取元素时,先通过散列算法定位到Segment private static int hash(int h) { h += (h << 15) ^ 0xffffcd7d 之所以不会读到过期的值,是因为根据Java内存模型的happen before原则,对volatile字段的写操作先于读操作; 即使两个线程同时修改和获取volatile变量,get操作也能拿到最新的值 根据 Java 内存模型,对 同一个 volatile 变量的写 / 读操作可以确保:写线程写入的值,能够被之后未加锁的读线程“看到”。

    1K20编辑于 2022-11-30
  • 来自专栏用代码征服天下

    Java基础系列7——集合系列(1)框架概述

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。 集合框架概述 Java集合java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。 Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections ) Java集合工具包框架图(如下): ? 7、Iterator简介 Iterator的定义如下: public interface Iterator<E> {} Iterator是一个接口,它是集合的迭代器。

    62030发布于 2019-12-12
  • 来自专栏一个会写诗的程序员的博客

    7集合类第7集合

    7集合类 在 Java 类库中有一套相当完整的容器集合类来持有对象。 Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是在Java 类库的基础上进行了改造和扩展,引入了不可变集合类,同时扩展了大量方便实用的功能,这些功能的API 都在 kotlin.collections (funlist[1]) // [1, 3, 5, 7] 是不是感觉很有意思? 本章将介绍Kotlin标准库中的集合类,我们将了解到它是如何扩展的Java集合库,使得写代码更加简单容易。 使用 map 函数的代码示例如下 val list = listOf(1, 2, 3, 4, 5, 6, 7) val set = setOf(1, 2, 3, 4, 5, 6, 7)

    1.7K20发布于 2018-08-17
  • 来自专栏技术杂货店

    java集合7】——— List接口超级详细源码分析

    1.List接口的特性 java.util.List 接口继承于 Collection 接口,与Map最大的不同之处,在于它属于单列集合,相当于一个列表,有以下这些特点: 有顺序,按照添加的顺序存储,是一种线性结构 3.相关子类介绍 说起List的实现子类,最重要的几个实现类如下: ArrayList:底层存储结构是数组结构,增加删除比较慢,查找比较快,是最常用的List集合。线程不安全。 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ // But ListIterator has been introduced with Java 1.2. 中文就是:因为Java 5可以用更特定的返回类型(称为协变返回类型)重写方法。但是ListIterator是在Java 1.2中引入的。

    75940编辑于 2022-02-15
  • 来自专栏迁移内容

    Java集合:什么是Java集合

    一、集合的由来 通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。 集合便应运而生了。 二、集合是什么? Java集合类存放在java.util包中,是一个用来存放对象的容器。 注意: 1.集合只能存放对象。 比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。 2.集合存放的都是对象的引用,而非对象本身。 所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。 3.集合可以存放不同类型,不限数量的数据类型。 三、Java集合框架 首先,我们来看一张图 发现一个特点,上述所有的集合类,除了map系列的集合,即左边的集合都实现了Iterator接口。

    1.7K20编辑于 2022-12-01
  • 来自专栏迁移内容

    Java集合:Set集合

    TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0 TreeSet集合:可以对Set集合中的元素进行排序。是不同步的。 但是TreeSet集合的存储是有序的,即:存储到集合中的元素是按自然顺序存储的。 判断元素唯一性的方式: 根据比较方法的返回值来判断。是0(零)就存入集合,不是0就不存。 因为Set集合是不能有重复的元素,无序。 Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。 也就是说,当遍历LinkedHashSet集合里元素时,HashSet将会按元素的添加顺序来访问集合里的元素。

    2.1K20编辑于 2022-12-01
  • 来自专栏FREE SOLO

    Java集合(3)---Java集合ArrayList

    Java中的数组相比,它的容量能动态增长。 它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。 ? RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。 for (int i = 0; i < size; i++) elementData[i] = null; size = 0; } // 将集合 = 0; } // 从index位置开始,将集合c添加到ArrayList public boolean addAll(int index, Collection<?

    1.3K00发布于 2019-04-18
  • 来自专栏Java 后端开发

    Java初始化List集合7种方式

    后端开发中经常会用到List集合初始化List集合有多种方法,在此统一整理下最常规的add方法Arrays工具类Collections工具类匿名内部类JDK8 StreamJDK9 List.ofImmutableList1 "health");System.out.println("常规方法: " + list1); //常规方法: [money, study, health]平常使用最多,后面缺失的泛型类型在JDK7之后 System.out.println("Arrays工具类: " + list2); //Arrays工具类: [money, study, health]//list2.add("happy"); //报异常 java.lang.UnsupportedOperationExceptionasList ("Collections工具类: " + list3); //Collections工具类: [happy, happy, happy]//list3.add("happy"); //报异常 java.lang.UnsupportedOperationExceptionnCopies ,也可和集合互相转换。

    2.6K20编辑于 2024-02-22
  • 来自专栏迁移内容

    Java集合:List集合

    List集合 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。 List集合里添加了一些根据索引来操作集合元素的方法 一、ArrayList ArrayList是List接口的典型实现类,本质上,ArrayList是对象引用的一个变长数组。 java.util.vector提供了向量类(Vector)以实现类似动态数组的功能。 程序中定义Enumeration类的一个对象Enumeration是java.util中的一个接口类, (3)public final synchronized Enumeration elements java.util包中的其他类中也都有这类方法,以便于用户获取对应的枚举类型。 在Enumeration中封装了有关枚举数据集合的方法。   

    2.3K20编辑于 2022-12-01
  • 来自专栏迁移内容

    Java集合:Map集合

    注意:Map中的集合不能包含重复的键,值可以重复。每个键只能对应一个值。 Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值。 Set<Map, Entry<K, V>> entrySet(); //即将Map集合转化为Set集合。 } 三、具体实现 接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。 (即先找到丈夫,再去找妻子) keySet的演示图解 (二)entrySet 先获取map中的键值关系封装成一个个的entry对象, 存储到一个Set集合中,再迭代这个Set集合, 根据entry获取对应的 可以对Map集合中的键进行排序。 五、HashMap

    2.5K20编辑于 2022-12-01
  • 来自专栏Java架构师必看

    Java 集合框架01—–Java集合总览

    Java 集合框架01-----Java集合总览 大家好,我是架构君,一个会写代码吟诗的架构师。 今天说一说Java 集合框架01-----Java集合总览,希望能够帮助大家进步!!! 今天开始阅读Java集合源码了。 集合框架类图如下图所示: 接下来我们将按照这个类图来开始我们的分析之旅。 总体说明: 最根部就是两个接口Collection 和Map 1. Collection 主要有List,Set和Queue三个分支,Collection定义了集合的基本操作,如集合的查找,修改,合并 - List是一个有序队列,允许重复元素,其实现类ArrayList Arrays和Collection是操作数组和集合的工具类。

    1.3K20编辑于 2021-12-14
  • 来自专栏FREE SOLO

    Java集合(2)---Java集合Collection接口

    1.Collection的定义如下: public interface Collection<E> extends Iterable<E> {} 它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作 Set是没有重复元素的集合7. Iterator Iterator的定义如下: public interface Iterator<E> {} Iterator是一个接口,它是集合的迭代器。 集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口,包括:是否存在下一个元素、获取下一个元素、删除当前元素。 即,当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast

    94700发布于 2019-04-18
  • 来自专栏后台技术底层理解

    Java 集合

    1.创建集合,并使用forEach和迭代器分别遍历 public class CollectionDemo { /* * 1.创建集合对象 * 2.创建添加集合元素 ArrayList(); //2.添加元素 array.add(""); array.add(15); array.add("java (); while(it.hasNext()){ System.out.println(it.next()); } } } 2.集合添加集合集合元素个数,集合化为Object数组(可以添加自定义对象) public static void main(String[] args) { //1.创建集合对象 ArrayList(); //2.添加元素 array.add(""); array.add(15); array.add("java

    92020发布于 2020-08-04
  • 来自专栏全栈开发日记

    Java集合③)

    List集合 Java.utli.List接口 extends Collection接口 List接口的特点: 1、有序的集合,存储的元素和去除的元素顺序是一致的; 2、有索引,包含了一些带有索引的方法 在操作索引的时候,一定要防止索引的异常 ArrayIndexOutOfBoundsException:数组索引越界异常 IndexOutOfBoundsException:索引越界异常,集合 ArrayList集合: 存储的结构是数组结构,元素增删慢,查询快 一般用于:查询数据,遍历数据 LinkedList集合: 数据存储的结构是链表结构,方便元素添加,删除 特点: 1、底层是链表 ; 2、里边包含了大量的首尾元素方法; 注意: 使用LinkedList集合特有方法,不能使用多态; 常用方法: void addFirst(E e):将指定元素插入此列表的开头

    96410编辑于 2022-05-12
  • 来自专栏全栈开发日记

    Java集合①)

    集合 集合就是Java中提供的一个容器,可以用来存储多个数据。 集合和数组的区别: 1、数据的长度固定的,集合的长度是可变的; 2、数组中存储的是同一类型的元素,可以存储基本数据类型,集合存储的都是对象; 学习集合的目标: 1、会使用集合存储数据; 2、会遍历集合, 把数据取出来; 3、掌握每种集合的特性; 集合框架学习方式: 1、学习顶层:学习顶层接口/抽象类中的共性方法,所有的子类都可以用; 2、使用底层:底层不是接口/抽象类,需要底层子类创建对象使用; 集合的结构图如下 : Java.util.Collection接口: 所有单列接口的最顶层接口,里面定义了所有单列结合共性的方法; 任意的单列集合都可以使用Collection接口中的方法; Collection接口中的方法 contains(Object obj):判断当前集合中是否包含给定的对象; boolean isEmpty():判断当前集合是否为空; int size():返回集合中元素的个数; Object[]

    85520编辑于 2022-05-12
  • 来自专栏闲花手札

    Java集合

    + al); List<Integer> al2 = new ArrayList<Integer>(); al2.add(5); al2.add(7) 判断参数集合是不是当前集合在子集合 Object[] toArray(); List接口继承Collection接口方法。 , Hello, Java, Hello, World] } } 删除方法 boolean remove(Object obj); 删除集合中的指定元素,删除成功返回true,未找到指定元素 at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at com.qfedu.b_iterator.Demo3.main

    2.2K20发布于 2021-08-24
  • 来自专栏闲花手札

    Java集合

    + al); List<Integer> al2 = new ArrayList<Integer>(); al2.add(5); al2.add(7) 判断参数集合是不是当前集合在子集合 Object[] toArray(); List接口继承Collection接口方法。 Java, Hello, World] } } 删除方法 boolean remove(Object obj); 删除集合中的指定元素,删除成功返回true,未找到指定元素,无法删除返回 at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at com.qfedu.b_iterator.Demo3.main

    56650编辑于 2023-10-17
领券