精华内容
下载资源
问答
  • Java 容器 Vector

    2019-07-30 21:22:13
    文章目录3....Java 容器 3. Vector 3.1 同步 它的实现与 ArrayList 类似,但是使用了 synchronized 进行同步。 public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elem...

    Java 容器

    3. Vector

    3.1 同步

    它的实现与 ArrayList 类似,但是使用了 synchronized 进行同步。

    public synchronized boolean add(E e) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = e;
        return true;
    }
    
    public synchronized E remove(int index) {
        modCount++;
        if (index >= elementCount)
            throw new ArrayIndexOutOfBoundsException(index);
        E oldValue = elementData(index);
    
        int numMoved = elementCount - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                                numMoved);
        elementData[--elementCount] = null; // Let gc do its work
    
        return oldValue;
    }
    

    3.2 与 ArrayList 的比较

    Vector 是同步的,因此开销就比 ArrayList 要大,访问速度更慢。最好使用 ArrayList 而不是 Vector,因为同步操作完全可以由程序员自己来控制;
    Vector 每次扩容请求其大小的 2 倍空间,而 ArrayList 是 1.5 倍。

    3.3 替代方案

    可以使用 Collections.synchronizedList() 得到一个线程安全的 ArrayList。

    List<String> list = new ArrayList<>();
    List<String> synList = Collections.synchronizedList(list);
    

    也可以使用 concurrent 并发包下的 CopyOnWriteArrayList 类。

    List<String> list = new CopyOnWriteArrayList<>();
    
    展开全文
  • java容器vector的使用和存取

    千次阅读 2018-03-27 10:24:16
    javavector容器相当于c++的动态数组,Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以...
    在java中vector容器相当于c++的动态数组,
    Vector 可实现自动增长的对象数组。 
    java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。 

        创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。 

    java vector遍历的五种办法:

    1. import java.util.Enumeration;  
    2. import java.util.Iterator;  
    3. import java.util.Vector;  
    4. import java.util.function.Consumer;  
    5. public class VetcorString {  
    6.   
    7.     public static void main(String[] args) {  
    8.         Vector<String>  t=new Vector<String>();  
    9.         t.add("H");  
    10.         t.add("E");  
    11.         t.add("L");  
    12.         t.add("L");  
    13.         t.add("O");    
    14.         //第一种  
    15.         for (String string : t) {  
    16.             System.err.print(string);  
    17.         }  
    18.         //第二种  
    19.         t.forEach(new Consumer<String>() {  
    20.             @Override  
    21.             public void accept(String t) {  
    22.                 // TODO Auto-generated method stub  
    23.                 System.out.print(t);      
    24.             }  
    25.         });  
    26.         //第三种  
    27.         for (int i = 0; i < t.size(); i++) {  
    28.             System.out.print(t.get(i));   
    29.         }  
    30.         //第四种  
    31.         Iterator<String> it = t.iterator();  
    32.         while (it.hasNext()) {  
    33.             String string = (String) it.next();  
    34.             System.err.print(string);  
    35.         }  
    36.         //第五种  
    37.         Enumeration<String> enume = t.elements();  
    38.         while(enume.hasMoreElements()){  
    39.             System.out.print(enume.nextElement().toString());  
    40.         }  
    41.     }  
    42. }

    在java中访问容器时,需要和迭代器iterator配合使用。在上述方法中也有体现,接下来再举一个例子:

    package suanFa01;
    
    import java.util.*;
    
    public class Day01 {
    	public  static void main(String []args) {
    		 Vector<Integer>  ivec = new Vector<Integer>();
    		 System.out.println("请输入一个整数");
    		 Scanner sc = new Scanner(System.in);
    		 int n = sc.nextInt();
    		 int k = 2;
    		// Integer integer1 = new Integer(k);
    		 System.out.println(n+"的质因数分解为:");
    		 while(n>=2) {
    			 if(n%k == 0) {
    				 ivec.addElement(k);
    				 n = n/k;
    			 }
    			 else {
    				 ++k;
    			 }
    		 }
    		Iterator<Integer> it = ivec.iterator();//通过迭代器来循环打印出容器中的元素
    		while(it.hasNext()) {
    			Integer nnn = it.next();
    			System.out.print(nnn+"*");
    		}
    	 
    	}
    
    }
    

    声明:原创文章,转载请注明出处。


    展开全文
  • JAVA-容器 Vector

    2021-09-03 10:14:39
    Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的: Vector 是同步访问的。 Vector 包含了许多传统的方法,这些方法不属于集合框架。 Vector 主要用在事先不知道数组的大小,或者只是需要一个...

    Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:

    • Vector 是同步访问的。
    • Vector 包含了许多传统的方法,这些方法不属于集合框架。

    Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。


    展开全文
  • 一句话:Vector线程安全,ArrayList线程不安全,以下是实验代码: ...import java.util.Vector; public class ArrayListAndVectorThread { //实例化两个静态容器 static Vector&lt;Integer&gt...

    一句话:Vector线程安全,ArrayList线程不安全,以下是实验代码:

    package com.yarm.test;
    
    import java.util.ArrayList;
    import java.util.Vector;
    
    public class ArrayListAndVectorThread {
    	//实例化两个静态容器
    	static Vector<Integer> vector = new Vector<Integer>();
    	static ArrayList<Integer> arrayList = new ArrayList<Integer>();
    
    	public static class ArrayListThread implements Runnable{
    		
    		
    		public void run(){
    				
    			for (int i = 0; i < 10000000; i++) {
    				//线程不安全
    				vector.add(i);
    				//线程安全
    				arrayList.add(i);
    			}
    		}
    	}
    	
    	// main函数
    	public static void main(String[] args) throws InterruptedException {
    		Thread t1 = new Thread(new ArrayListThread());
    		Thread t2 = new Thread(new ArrayListThread());
    		t1.start();
    		t2.start();
    		t1.join(); t2.join();
    		System.out.println("arrayList长度:" + arrayList.size());
    		System.out.println("vector长度:" + vector.size());
    	}
    }
    

    控制台输出结果:

    arrayList长度:19991800
    vector长度:20000000

    最后结论:

    依照实验结果说明,ArrayList输出的长度不是20000000,而Vector的长度正好等于20000000,说明ArrayList线程不安全,Vector线程安全。

     

    展开全文
  • java容器类---Vector

    千次阅读 2015-08-08 11:34:45
    1、Vector简介 (1)Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。 (2)Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入...
  • Java容器Vector

    2018-10-13 15:54:57
    Vector的实现与 ArrayList 类似,但是使用了 synchronized 进行同步,所以是线程安全的,扩容大小为2倍,ArrayList为1.5倍。
  • 主要介绍了Java容器中常用的ArrayList类与Vector类用法,文中只对其最基本的功能给出了示例代码,需要的朋友可以参考下
  •   在上一篇博客 Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧) 从源码的角度分析了ArrayList容器,现在我们看下Vector容器又是什么。 注明:以下源码分析都是基于jdk 1.8.0_221版本 Java容器之...
  • 我们都知道,在Java的Collections包含了List和Set,而List里面有ArrayList、LinkedList、还有Vector,对于很多Java初学者来说,前面两个比较常用,ArrayList查询效率比较高(底层是数组实现),而LinkedList的增删...
  • java容器Vectort用add添加对象是对象引用的问题  众所周知的是在java中去掉了c++中的最为神奇的指针,但是java中存在着引用(个人认为java中的引用与c++的指针很相似,只是不能如指针那般使用)。引用,我们可以...
  • 我们都知道,在Java的Collections包含了List和Set,而List里面有ArrayList、LinkedList、还有Vector,对于很多Java初学者来说,前面两个比较常用,ArrayList查询效率比较高(底层是数组实现),而LinkedList的增删...
  • JAVA容器讲解.pdf

    2019-11-15 10:29:22
    Java容器讲解PPT,Collection Map(HashMap TreeMap LinkedHashMap) List (ArrayList LinkedList Vector) Set (HashSet TreeSet LinkedHashSet)
  • Javavector容器排序

    千次阅读 2014-06-04 17:58:57
    Javavector容器排序 /** * 功能:定义一个Student数组,其中保存学生的基本信息,包括姓名,学号,性别,还有三门课的成绩 * 和课程对应的学分,计算出学分积,降序排序 * 时间:2014年6月4日16:33:24 * ...
  • javaVector的实现

    千次阅读 2017-12-18 20:09:01
    JavaVector底层实现
  • 最常用的容器 首先是vector类的继承关系如下图 Vector和ArrayList很相似,都是内部维护了一个可以变换长度的数组,但他们的扩容机制不同。 1.构造函数 public Vector() { this(10);//容量为 10 的数组。 }...
  • Vector和ArrayList也是容器的一个分支。Vector是同步的,线程安全的。 ArrayList是异步的,非线程安全的。 在默认情况下,当用来存放元素的数组超过了内部分配的长度的时候。 ArrayList会按照原长度的50%来续加...
  • Java容器详解

    2021-02-24 10:20:29
    1.什么是容器Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体。2.常用的Java1.List有序的collection(也称为序列)。此接口的用户...
  • Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。从本文开始将开启一个系列详细分析Java容器中的每个成员,包括源代码分析,性能分析,不同容器之间对比等等,链接将同步...
  • java vector 向量类copyInto()方法 (Vector Class copyInto() method) copyInto() method is available in java.util package. copyInto()方法在java.util包中可用。 copyInto() method is used to copy all of the ...
  • Java容器有哪些?哪些是同步容器,哪些是并发容器?一、基本概念新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
  • 1、Java Collections 框架是什么 Java Collections框架中包含了大量集合接口以及这些接口的实现类和操作它们的算法(例如排序、查找、反转、替换、复制、取最小元素、取最大元素等),具体而言,主要提供了List...
  • JAVA容器详解

    2020-05-12 15:56:00
    JAVA容器1、Java容器类型2、List实现类对比(1)Vector与ArrayList的对比(2)LinkedList与ArrayList的对比 1、Java容器类型 如上图所示,java容器主要继承两大接口,分别是Collection和Map; List、Set、Queue三大...
  • Java容器继承关系

    千次阅读 2019-07-22 18:29:07
    Java容器 Set: HashSet,LinkedHashSet,TreeSet,EnumSet(后三个有序) List: ArrayList,LinkedList,Stack,Vector(全部有序) Queue:LinkedBlockingQueue,ArraysBlockingQueue(全部有序) Map: HashMap,...
  • List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)
  • Java容器常见面试题

    千次阅读 多人点赞 2019-04-16 16:21:03
    1. Java 容器都有哪些? Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示是Collection和Map的继承体系: 具体如下结构: Collection List ArrayList LinkedList Vector Stack Set ...
  • java 容器都有哪些?

    万次阅读 多人点赞 2019-07-27 18:36:57
    容器可以说是Java Core中比较重要的一部分了。 数组,String,java.util下的集合容器 ============================================================================== 数组长度限制为 Integer.Integer.MAX_...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...
  • Vector里一些写删操作的方法都是用synchronized实现同步,这样vecotor在使用时真的不需要考虑线程安全问题吗? Vector vector = new Vector(); public void put(String element){ if (!vector.contains...
  • Vector: Object数组 LinkedList: 双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环) List,Set,Map三者的区别 List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,560
精华内容 22,624
关键字:

java容器vector

java 订阅