List集合接口下的三个实现类

ArrayList类

底层采用数组存储元素,具有高效的查询效率,但是增删效率低。
一般我们采用多态的方式创建集合,但是ArrayList因为是实现类所以也可以创建。
ArrayList集合中的方法与其父接口List差不多相同。
下面是使用ArrayList集合的案例:
	去除ArrayList集合中重复元素。(因为List集合特点是元素有序可重复)
	方法一:创建新集合
		ArrayList list2=new ArrayList();
        list2.add(100);
        list2.add("da");
        list2.add(100);
        list2.add("da");
        list2.add(3);
        list2.add(100);
        list2.add("da");
        list2.add(100);
        list2.add("da");
        list2.add(3);
        list2.add(3);
        //方法一,遍历旧集合,对新集合进行判断,如果新集合中没有旧集合中的元素就将该元素添加进去
        ArrayList list3=new ArrayList();
        for (int i = 0; i <list2.size() ; i++) {
            if(!list3.contains(list2.get(i))){
                list3.add(list2.get(i));
            }
        }
	方法二:不创建新集合,使用for循环
//方法二:双重for循环,对集合进行双重遍历,外层循环拿出一个元素与内层循环的每一个元素进行比较,要是发现重复的元素就移除该元素。
//需要注意的是,内层循环的开始下标要要对外层循环的开始下标加一,因为外层循环的元素不能和自身相比。
//找到一个相同元素进行删除,需要将内层循环的指标进行自减,因为删除一个元素,集合的长度就会变小,后面没有进行比较的元素会因为删除前面的元素没有和外层循环的元素进行判断,就会发生漏判情况。
 for (int i = 0; i <list2.size() ; i++) {
            for (int j = i+1; j<list2.size() ; j++) {
                if(list2.get(i)==list2.get(j)){
                    list2.remove(j);//移除一个元素,就要将指标减少一下
                    j--;
                }
            }
        }

Vector类

Vector集合底层和ArrayList集合一样,都是以数组存放元素,但是Vector对于线程是安全的,效率比ArrayList集合低。
Vector集合中有特有的功能,有自己特有的迭代器。
public void addElement(E obj) 
	将指定元素添加到Vector集合的末尾
public E elementAt(int index) 
	返回指定位置的元素
public boolean removeElement(Object obj) 
	移除Vector集合中的第一个匹配的元素,如果集合中不包含该元素,则元素保持不变
public void removeElementAt(int index) 
	移除Vector集合中指定索引上的元素
public void setElementAt(E obj, int index)
	将此向量指定的index处的组件设置为指定的对象
public Enumeration<E> elements()
	返回此向量的组件的枚举
public static void main(String[] args) {
        Vector v=new Vector();
        //添加元素在集合的末尾
        v.addElement(100);
        v.addElement(1000);
        v.addElement(10000);
        v.addElement(100000);
        //返回指定索引的元素
        System.out.println(v.elementAt(0));//100
        //移除集合中第一个匹配到的元素,如果该集合中没有该元素,则集合不变
        v.removeElement(100);
        //移除指定索引处的元素
        v.remove(1);
        System.out.println("============");
        //获取Vector集合中特有的迭代器,遍历集合
        Enumeration e=v.elements();
        while (e.hasMoreElements()){
            System.out.println(e.nextElement());
        }
    }

LinkedList类

LinkedList集合底层是通过链表存储元素,所以该集合类的特点是:查询慢,增删快。
LinkedList类特有功能:
	public void addFirst(E e) 
		将指定元素插入到此列表的开头
	public void addLast(E e) 
		将指定元素插入到此列表的结尾
	public E getFirst()
		得到该列表的第一个元素
	public E getLast()
		得到该列表的最后一个元素
	public E removeFirst()
		移除并返回此列表的第一个元素
	public E removeLast()
		移除并返回此列表的最后一个元素
 public static void main(String[] args) {
        LinkedList l=new LinkedList();
        //向集合开头添加元素
        l.addFirst(100);
        l.addFirst(1000);//集合现在是[1000,100];
        //向集合末尾添加元素
        l.addLast(10000);//[1000,100,10000];
        //得到该集合第一个元素
        System.out.println(l.getFirst());//1000
        //得到该集合最后一个元素
        System.out.println(l.getLast());//10000
        //移除该集合的第一个元素并返回
        System.out.println(l.removeFirst());//1000
        //移除该集合的最后一个元素并返回
        System.out.println(l.removeLast());//10000
        System.out.println(l);//[100]
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值