Java EE笔记之集合框架01

详解Java List接口与子类ArrayList, Vector, LinkedList
本文介绍了List接口及其常用方法,重点讲解了ArrayList、Vector和LinkedList的特点,通过实例演示了循环取值的不同方法。

一. List集合介绍

UML图:
在这里插入图片描述

1.1List接口常用方法:

方法解释
add(Object element)向列表的尾部添加指定的元素
size()返回列表中的元素个数
get(int index)返回列表中指定位置的元素,index从0开始
add(int index, Object element)在列表的指定位置插入指定元素
set(int i, Object element)将索引i位置元素替换为元素element并返回被替换的元素
clear()从列表中移除所有元素
isEmpty()判断列表是否包含元素,不包含元素则返回 true,否则返回false
contains(Object o)如果列表包含指定的元素,则返回 true
remove(int index)移除列表中指定位置的元素,并返回被删元素
remove(Object o)移除集合中第一次出现的指定元素,移除成功返回true,否则返回false
iterator()返回按适当顺序在列表的元素上进行迭代的迭代器

List集合有三个儿子ArrayList和Vector还有一个LinkedList,它们各有各的特性只有ArratList完美继承了它父亲的所有特点

1.2特点:

基于数组实现的
List集合的特点是有序,可重复它的所有儿子都继承了这两个特点

二. Arraylist

arraylist继承了它父亲的所有方法,下面是两个方法的示范

import java.util.ArrayList;
public class Demo {
	public static void main(String[] args) {
		//<>表示泛型可以指定数据类型比如填String那么这个集合就只能填字符串类型
		ArrayList<String> list = new ArrayList<String>(); 
		list.add("user"); //add()用于向List集合容器中添加元素。
		list.add("text");
		System.out.println(list);
		System.out.println(list.size()); //size()用于获取集合的长度。
		System.out.println(list.get(1)); //get()获取指定下标(从0开始)位置的元素。
	}
}

arraylist是没有线程安全锁的可以查看源码看一下
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢

三. Vector

Vector特点:增删改查都慢,已过时,安全,加了线程锁,并且继承了它父亲的特点有序可重复

四. LinkedList

特点:链条式存储,有序可重复,因为是链条式存储所以导致它查询慢增删改快
子弹夹案例:

public class MyStack {
            //弹夹:
            private LinkedList ls=new LinkedList();

            //装弹(压栈):
            public void push(Object obj){

            ls.addFirst(obj); //每次都把子弹增加到第一颗,把原来的压到下面去

            }

            //打枪(出栈):
            public Object pop(){

                Object obj = ls.getFirst();//取出第一颗子弹
                ls.removeFirst(); //移除第一颗子弹
                return obj;//返回刚刚打出的子弹
            }

            //计算弹夹中子弹数量:
            public int size(){

            return ls.size();

            }

            public static void main(String[] args) {

            MyStack ms=new MyStack();

            ms.push("a");//装第一颗子弹

            ms.push("b");

            ms.push("c");

            ms.push("d");//装最后一颗子弹

            while(ms.size()!=0){//如果子弹数量不等于0,就一直循环

                System.out.println(ms.pop());

            }

            }
}

五. 循环取值方法

ArrayList取值方法

		//()里面是初始化集合的大小/长度
        List list=new ArrayList<>(50);
		list.add("字符串");
		list.add('a');
		list.add(1);
		list.add(true);
		//遍历方式一(foreach)
		for (Object o : list) {
			System.out.println(o);
		}
        //遍历方式二(通过下标)
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}
        //迭代器(官方推荐使用)
		Iterator it = list.iterator();
		while(it.hasNext()) {//是否有下一个值
			Object next = it.next();//取值
			System.out.println(next);
		}

Vector取值方式

        Vector vc=new Vector();
        vc.add("字符串");
        vc.add(1);
        vc.add('a');
        vc.add(true);
        //foreach取值(快速简便)
        for (Object o : vc) {
            System.out.println(o);
        }
        //for循环取值
        for (int i = 0; i < vc.size(); i++) {
            System.out.println(vc.get(i));
        }
        //迭代器(官方推荐使用)
        Iterator iterator = vc.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }

LinkedList取值方法

 LinkedList link=new LinkedList<>();
        link.add("字符串");
        link.add(1);
        link.add('a');
        link.add(true);
        //foreach取值(快速简便)
        for (Object o : link) {
            System.out.println(o);
        }
        //for循环取值
        for (int i = 0; i < link.size(); i++) {
            System.out.println(link.get(i));
        }
        //迭代器(官方推荐使用)
        Iterator iterator = link.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next);
        }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值