ArrayList、Vector

Vector特有功能:

import java.util.Enumeration;
import java.util.Vector;

/*    Vector特有功能
        添加功能:void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加 1。                ----add();
        获取功能:E elementAt(int index) 返回指定索引处的组件。                                      ----get();
                 Enumeration<E> elements() 返回此向量的组件的枚举。                                 ----Iterator();
                 boolean hasMoreElements() 测试此枚举是否包含更多的元素。                            ----hasNext();
                 E nextElement()  如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。  ----next();
                  */

public class VectorDemo {

    public static void main(String[] args) {
        Vector<String> v = new Vector<>();
        v.addElement("hello");
        v.addElement("java");
        v.addElement("world");
        for(int i = 0; i < v.size(); i++){
            String s = (String)v.elementAt(i);
            System.out.println("使用elementAt()返回指定位置的元素 " + s);
        }

        System.out.println("------------------------");

        Enumeration en = v.elements();
        while(en.hasMoreElements()){
            String s = (String)en.nextElement();
            System.out.println("使用特有迭代功能 " + s);
        }

    }

}

LinkedList类概述
    底层数据结构是链表,查询慢,增删快
    线程不安全,效率高

import java.util.LinkedList;
/*
 *     LiknedList类特有功能
    void addFirst(E e) 将指定元素插入此列表的开头
    void addLast(E e) 将指定元素添加到此列表的结尾
    E getFirst() 返回此列表的第一个元素。
    E getLast() 返回此列表的最后一个元素。
    E removeFirst() 移除并返回此列表的第一个元素。
    boolean removeFirstOccurrence(Object o) 从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
     E removeLast() 移除并返回此列表的最后一个元素。
     boolean removeLastOccurrence(Object o) 从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
*/
public class LinkedListDemo {

    public static void main(String[] args) {
        LinkedList<String> ll = new LinkedList<>();

        ll.add("hello");
        ll.add("world");
        ll.add("java");

        ll.addFirst("添加到列表的开头");

        ll.addLast("添加到列表的最后一位");

        System.out.println("获取列表的第一个元素 " + ll.getFirst());

        System.out.println("获取列表的最后一个元素 " + ll.getLast());

        System.out.println("移除并返回列表的第一个元素 "+ ll.removeFirst());

        System.out.println("移除并返回列表的最后一个元素 "+ ll.removeLast());

        System.out.println("LinkedList的元素 " + ll);
    }

}

去除重复元素:

import java.util.ArrayList;
import java.util.Collection;

public class rrayListDemo {

    public static void main(String[] args) {
        ArrayList<String> c = new ArrayList<>();
        c.add("zed1");
        c.add("zed1");
        c.add("zed2");
        c.add("zed3");
        c.add("zed4");
        c.add("zed5");
        c.add("zed5");

        System.out.println(c);

        //通过新建一个集合去除List集合中的重复元素
        Collection<String> c2 = new ArrayList<>();
        for(int i = 0; i < c.size();i++){
            String s = (String) c.get(i);
            if(!c2.contains(s)){
                c2.add(s);
            }
        }
        System.out.println("第一种方法去重复,c2的元素为: " + c2);

        //方法二:在同一个集合中操作
        for(int i = 0; i < c.size(); i++){
            for(int j = i + 1;j < c.size();j++){
                if(c.get(i).equals(c.get(j))){
                    c.remove(c.get(j));
                }
            }
        }
        System.out.println("第二种方法,c的元素为:" + c);
    }

}
时间: 2024-12-09 14:38:41

ArrayList、Vector的相关文章

Java ArrayList、Vector和LinkedList等的差别与用法(转)

Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都容许直接序号索引元素,然则插入数据要设计到数组元素移动等内存操纵,所以索引数据快插入数据慢,Vector因为应用了synchronized办法(线程安然)所以机能上比ArrayList要差,LinkedList应用双向链表实现存储,按序号索引数据须要进行向前或向后遍历,然则插入数据时只须要记录本项的

ArrayList、Vector、LinkedList的区别联系?

1.ArrayList.Vector.LinkedList类都是java.util包中,均为可伸缩数组. 2.ArrayList和Vector底层都是数组实现的,所以,索引数据快,删除.插入数据慢. ArrayList采用异步的方式,性能好,属于非线程安全的操作类.(JDK1.2) Vector采用同步的方式,性能较低,属于线程安全的操作类.(JDK1.0) 3.LinkedList底层是链表实现,所以,索引慢,删除.插入快,属于非线程安全的操作类.

【java】ArrayList、Vector、LinkedList的区别

ArrayList.Vector.LinkedList同属于List接口,都存在于java.util包中,都是可伸缩数组,可以动态改变长度. ★ArrayList和Vector都是基于存储元素Object[] array来实现的,它们会在内存中开辟一段连续的空间来存储,因为数据存储是连续的,所以它们支持用下标的方式来访问数据,而且索引数据的速度会比较快,也正因为存储是连续的,在其中插入新的元素时需要移动数据,所以在插入数据时执行速度会比较慢. 在未定义容量大小时,ArrayList和Vector

ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量

这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因子的系数小于等于1,意指  即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容. 另外,扩容也是有默认的倍数的,不同的容器扩容情况不同. List 元素是有序的.可重复 ArrayList.Vector默认初始容量为10 Vector:线程

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

Java集合(2)——深入理解ArrayList、Vector和LinkedList

回顾 Java集合主要分为两个体系结构,Collection和Map.这篇博客主要介绍Collection子接口List下的三个经常使用的实现类:ArrayList.Vector和LinkedList. 详细内容参见<Java基础--集合> 先看下关系图: 1.ArrayList 这是List最常用的实现类,想一想为什么他最常用? Array,在java中意为"数组".猜想ArrayList和数组应该关系很密切,其实ArrayList可以看作是一个可以改变大小的数组. 举个

List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源码解析

学习List接口实现类 ArrayList  Vector  LinkedList List接口的实现类中最常用最重要的就是这三个:ArrayList.Vector.LinkedList. JDK中这三个类的定义: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { <span st

java集合之列表:ArrayList、Vector、LinkedList

1 package com.jdk7.chapter4; 2 3 import java.util.ArrayList; 4 import java.util.LinkedList; 5 import java.util.List; 6 import java.util.ListIterator; 7 import java.util.Stack; 8 import java.util.Vector; 9 /** 10 * java中集合的形式一>列表(有序允许重复) 11 * 列表的三种表现形

ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量

这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低. 加载因子的系数小于等于1,意指 即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容. 另外,扩容也是有默认的倍数的,不同的容器扩容情况不同. List 元素是有序的.可重复 ArrayList.Vector默认初始容量为10 Vector:线程安

ArrayList、Vector、LinkedList、HashMap、HashTable的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,次数组元素大于实际存储的数据以便添加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通过性能上校ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项即可,所以插入速度较快. HashMap和HashTable的区别: 二者都实现了 M