JAVA学习笔记(二十)- 集合 List

ArrayList 集合


/*
 * ArrayList,实现List接口
 * 声明数组时必须指定数组中元素的类型,可以是基本数据类型,也可以是引用数据类型
 * 声明集合时可以不指定其元素的类型,元素类型默认为Object类型
 */
public class Test01
{
    public static void main(String[] args)
    {
        // 创建一个ArrayList集合
        ArrayList list = new ArrayList();
        // 添加元素
        list.add("tom");
        list.add(25);
        list.add(12.4);
        list.add(true);
        list.add(new Student());
        list.add("tom");// List集合中的元素特点:有序、允许重复
        list.add(1, "alice");
        // list.add(20, 250);
        list.add(null);
        // 修改元素
        list.set(0, "mike");
        // 删除元素
        list.remove(1);
        list.remove("tom");
        list.remove(new Integer(25));
        // list.clear();//清空集合中的元素
        // 获取集合中的元素
        /*
         * Object obj=list.get(2);//get()方法返回一个Object boolean flag=(Boolean)
         * obj;
         */
        boolean flag = (Boolean) list.get(2);
        System.out.println("集合中索引为2的元素:" + flag);
        // 判断集合中是否包括指定的元素
        System.out.println("tom安在?" + list.contains("tom"));
        System.out.println("集合是否为空:" + list.isEmpty());
        System.out.println("mike在集合中的索引:" + list.indexOf("mike"));
        System.out.println("元素个数:" + list.size());
        // 循环遍历集合中的元素
        for (int i = 0; i < list.size(); i++)
        {
            System.out.println(list.get(i));// 通过get()方法获取集合中的元素
        }

        // 将集合转换为数组
        Object[] objs = list.toArray();
        System.out.println("数组中的元素:"+Arrays.toString(objs));

    }
}

ArrayList集合实例

/*
 * ArrayList
 */
public class Test02
{
    public static void main(String[] args)
    {
        // 创建存储狗狗信息的集合
        List list = new ArrayList();
        Dog dog1 = new Dog("旺财", "大狼狗", 2);
        Dog dog2 = new Dog("黑子", "拉布拉多", 1);
        Dog dog3 = new Dog("小美", "雪娜瑞", 5);
        // 将狗狗对象添加到集合中
        list.add(dog1);
        list.add(dog2);
        list.add(dog3);
        // 查询狗狗的数量
        System.out.println("共有" + list.size() + "条狗狗!");
        System.out.println("分别为:");
        for (Object obj : list)//使用foreach循环遍历集合
        {
            Dog dog = (Dog) obj;// 集合中元素类型默认为Object,需要强转
            System.out.println(dog.getName() + "," + dog.getBrand() + ","
                    + dog.getAge());
        }
    }
}

/*
 * Dog类
 */
class Dog
{
    private String name;
    private String brand;
    private int age;

    public Dog(String name, String brand, int age)
    {
        super();
        this.name = name;
        this.brand = brand;
        this.age = age;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getBrand()
    {
        return brand;
    }

    public void setBrand(String brand)
    {
        this.brand = brand;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

}

Vectory 集合

/*
 * Vectory,用法与ArrayList类似,其是线程安全的,但效率性能不如ArrayList
 * 已过时,不建议使用
 */
public class Test03
{
    public static void main(String[] args)
    {
        // 创建一个Vector集合
        Vector v = new Vector();
        v.add(100);
        v.add(new Double(6.5));
        v.add(new Date());
        v.add("hello");
        v.add(new String("world"));
        System.out.println("元素个数:" + v.size());

        /*
         * 遍历集合方法
         */
        // 方法一
        System.out.println("********方法一*******");
        for (int i = 0; i < v.size(); i++)
        {
            System.out.println(v.get(i));
        }

        // 方法二
        System.out.println("********方法二*******");
        for (Object obj : v)
        {
            System.out.println(obj);
        }

        // 方法三:使用Enumeration迭代,适用于Vector、HashTable、Properties等集合,已过时
        System.out.println("********方法三*******");
        Enumeration e=v.elements();//调用Vector的elements()方法,返回一个Enumeration实例
        while(e.hasMoreElements()){//调用Enumeration的hasMoreElements()方法判断是否有元素
            Object obj=e.nextElement();//调用Enumeration的nextElement()方法获取当前元素
            System.out.println(obj);
        }

        //直接输出集合
        System.out.println(v);

    }
}

Stack栈

import java.util.Stack;

/*
 * Stack栈,继承自Vector
 */
public class Test04
{
    public static void main(String[] args)
    {
        // 创建一个空堆栈
        Stack stack = new Stack();
        // 入栈
        stack.push("tom");
        stack.push("jack");
        stack.push("alice");
        // 出栈
        System.out.println(stack.pop());
    }
}

LinkedList集合

import java.util.LinkedList;

/*
 * LinkedList,实现List接口,链表存储,频繁添加、修改或删除时效率更高
 */
public class Test05
{
    public static void main(String[] args)
    {
        // 创建一个LinkedList集合
        LinkedList list = new LinkedList();
        list.add("itany");
        list.add(12);
        list.add(new Double(12.5));
        list.add(0, "赵信");
        list.addFirst("盖伦");
        list.addLast("寒冰");
        System.out.println("索引为2的元素:" + list.get(2));
        System.out.println("第一个元素:" + list.getFirst());
        System.out.println("第一个元素:" + list.get(0));
        System.out.println("最后一个元素:" + list.getLast());
        System.out.println("最后一个元素:" + list.get(list.size() - 1));
        System.out.println("集合中的元素:" + list);

        list.removeFirst();
        list.removeLast();
        System.out.println("集合中的元素:" + list);

    }
}

ArrayLis、Vector、LinkedList性能对比

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;

/*
 * ArrayLis、Vector、LinkedList性能对比
 */
public class Test06
{
    public static void main(String[] args)
    {
        ArrayList al = new ArrayList();
        Vector v = new Vector();
        LinkedList ll = new LinkedList();

        // 测试ArrayList性能
        long time1 = System.currentTimeMillis();// 获取执行前的毫秒数
        for (int i = 1; i < 100000; i++)
        {
            al.add(0, i);
        }
        long time2 = System.currentTimeMillis();// 获取执行后的毫秒数
        System.out.println("ArrayList花费的时间:" + (time2 - time1));

        // 测试Vector性能
        long time3 = System.currentTimeMillis();
        for (int i = 1; i < 100000; i++)
        {
            v.add(0, i);
        }
        long time4 = System.currentTimeMillis();
        System.out.println("Vector花费的时间:" + (time4 - time3));

        // 测试LinkedList性能
        long time5 = System.currentTimeMillis();
        for (int i = 1; i < 100000; i++)
        {
            ll.addFirst(i);
        }
        long time6 = System.currentTimeMillis();
        System.out.println("LinkedList花费的时间:" + (time6 - time5));

    }
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。