Java集合简介

1
2
3
4
5
6
7
8
9
10
11
12
/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

  

1、什么是集合框架

        集合我们又常称集合框架。集合与数组都是对多个数据进行存储操作的结构,也是JAVA当中的容器。JAVA集合就像一种容器,可以动态地把多个对象的引用放入容器中。在开发中我们以数据结构为载体,以对象值的固定为目标,对集合展开研究。

2、集合框架的结构

编辑

3、什么是Vector

vector又称向量,是一种古老的存储方式,其底层实现是由不可变动的数组实现。不可变是指存储空间地址不可改且存储空间连续。

又因为vector大量使用了synchronized关键字去修饰操作方法,从而使得其为线程安全的,相对应的操作效率大大降低,又因为其扩容机制是每次扩容2倍,相比较于ArrayList的1.5倍扩容而言,申请的空间又过多,因此,到目前渐渐地被ArrayList替代。

 

编辑

 

4、vector扩容因子

 protected int capacityIncrement;

 5、扩容源码

vector扩容每一次是以两倍扩容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
 
   private void grow(int minCapacity) {
       // overflow-conscious code
       int oldCapacity = elementData.length;
       int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                        capacityIncrement : oldCapacity);
       if (newCapacity - minCapacity < 0)
           newCapacity = minCapacity;
       if (newCapacity - MAX_ARRAY_SIZE > 0)
           newCapacity = hugeCapacity(minCapacity);
       elementData = Arrays.copyOf(elementData, newCapacity);
   }
 
   private static int hugeCapacity(int minCapacity) {
       if (minCapacity < 0) // overflow
           throw new OutOfMemoryError();
       return (minCapacity > MAX_ARRAY_SIZE) ?
           Integer.MAX_VALUE :
           MAX_ARRAY_SIZE;
   }

  

6、vector特点

        1、查询快

                由于vector底层是由一个数组构成,因此其查询相对而言较快。

        2、线程安全

7、vector使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
  
public class ArrayListExample {
 public static void main(String[] args)
  {
 //Vector
    Vector<String> vector = new Vector<>(Arrays.asList("A","B","C"));
  
    Enumeration<String> vectorEnums = vector.elements();
  
 while(vectorEnums.hasMoreElements()) {
      String value = vectorEnums.nextElement();
 if("B".equals(value)) {
        vector.add("D");
      }
      System.out.println(value);
    }
  
   
 
  }
}

  

posted @   呆萌老师  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示