Java集合(List接口+其三个子类)

一、Link接口

      Link接口是Collection接口的子接口,他有三个子类,ArrayList,Vector,LinkedList,其特有的功能展示:

ListDemo.java
package com.test_02;

import java.util.*;

public class ListDemo {
    public static void main(String[] args) {
        //List接口是Collection的子接口,他是有序的(存储和取出的元素一至),可重复的。
        List list = new ArrayList();
        //List接口的三个子对象
//        ArrayList array = new ArrayList();//没什么特殊的常用的方法
//        Vector vector = new Vector();
        //
//        LinkedList ll = new LinkedList();

        Student s1 = new Student("刘邦",40);
        Student s2 = new Student("项羽",22);
        Student s3 = new Student("薄姬",18);
        Student s4 = new Student("卢馆",22);

        list.add(s1);
        list.add(s2);
        list.add(s3);

        //List的特有功能
        //添加功能
        list.add(1,s4);
        //获取指定位置元素,可以加循环实现遍历功能(size())
        System.out.println("序号为一:"+list.get(1));
        //删除指定位置元素,返回值是被删除元素的值
        System.out.println("被删除元素:"+list.remove(2));
        //修改元素,返回被修改的元素
        System.out.println("被修改元素,修改为s3中值:"+list.set(1,s3));
        //特有遍历迭代器ListIterator,他是Iterator的子类对象,用法一样
//        Iterator it = list.iterator();
//        while(it.hasNext()){
//            Student s = (Student)it.next();
//            System.out.println(s);
//        }
        ListIterator it = list.listIterator();
        while(it.hasNext()){
            Student s = (Student)it.next();
            System.out.println(s);
            //特有的功能
            //previous();往前遍历,但要先正向遍历,才能逆向遍历
            //hasPrevious();判断往前是否有元素
        }
    }
}

上面代码用到的Student对象:Student.java

package com.test_02;

public class Student {
    public String name;
    public int age;

    public Student(){}

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

二、List的三个子类对象

1.其中ArrayList没有特有的常用对象,底层是数组,查询快,增删慢,线程不安全,效率高,最常用

2.Vector有其特有的添加功能和获取功能,底层是数组,查询快,增删慢,线程安全,不常用

3.LinkList也有其特有的添加,获取,删除功能,底层是链表,查询慢,增删快,线程不安全,效率高。

查询多用:ArrayList,增删多用:LinkedList

VectorDemo.java
package com.test_02;

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

public class VectorDemo {
    public static void main(String[] args) {
        Vector v = new Vector();
        //添加功能,也可用简单的add()
        v.addElement("hello");
        v.addElement("java");
        //遍历
        for(int x=0;x<v.size();x++) {
            //获取功能,也可用简单的get()
            String s = (String)v.elementAt(x);
            System.out.println(s);
        }
        //迭代器,也可用简单的Iterator iterator(),hasnext(),next()
        Enumeration en = v.elements();
        while(en.hasMoreElements()) {
            String s = (String)en.nextElement();
            System.out.println(s);
        }
    }
}
LinkedListDemo.java
package com.test_02;

import java.util.LinkedList;

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

        ll.add("hello");
        ll.add("world");
        ll.add("java");
        //添加功能,首尾添加,多个是模拟栈先进后出
        ll.addFirst("first");
        ll.addFirst("first1");
        ll.addFirst("first2");
        ll.addLast("end");
        System.out.println(ll);
        //获取功 能,首尾获取
        System.out.println("first:"+ll.getFirst());
        System.out.println("end:"+ll.getLast());
        //删除功能,首尾删除,返回值是删除的元素
        System.out.println("Delfirst:"+ll.removeFirst());
        System.out.println("Delend:"+ll.removeLast());

        System.out.println(ll);
    }
}

 

发布了20 篇原创文章 · 获赞 32 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章