Java集合-----List详解

    List中的元素是有序排列的而且可重复

   1.LinkedList

      LinkedList是非线程安全的,底层是基于双向链表实现的

      LinkedList常用方法:

  •     toArray()  以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
  •     size()  返回此列表中的元素数
  •     set(int index,E element)  用指定的元素替换此列表中指定位置的元素
  •     removeLast()  从此列表中删除并返回最后一个元素
  •     removeFirst()  从此列表中删除并返回第一个元素
  •     remove(int index)  删除该列表中指定位置的元素
  •     getFirst()  返回此列表中的第一个元素
  •     getLast()  返回此列表中的最后一个元素
  •     get(int index)  返回此列表中指定位置的元素
  •     add(E element)  将指定的元素追加到此列表的末尾
  •     add(int index,E element)  在此列表中的指定位置插入指定的元素
  •     addFirst(E element)  在该列表开头插入指定的元素
  •     addLast(E element)   将指定的元素追加到此列表的末尾
  •     clear()  从列表中删除所有元素

   2.ArrayList

     ArrayList是非线程安全的,底层是基于数组实现

     ArrayList常用方法:

  •    toArray()  以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
  •    subList(int fromIndex,int toIndex)  返回此列表中指定的 fromIndex (包括)和 toIndex之间的独占视图
  •    size()  返回此列表中的元素数
  •    set(int index,E element)  用指定的元素替换此列表中指定位置的元素
  •    removeRange(int fromIndex,int toIndex)  从这个列表中删除所有索引在 fromIndex (含)和 toIndex之间的元素
  •    remove(int index)  删除该列表中指定位置的元素
  •    isEmpty()  如果此列表不包含元素,则返回true
  •    get(int index)  返回此列表中指定位置的元素
  •    add(E element)  将指定的元素追加到此列表的末尾
  •    add(int index,E element)  在此列表中的指定位置插入指定的元素
  •    clear()  从列表中删除所有元素
package com.gather;
/**
 * 人实体类
 * @author yyx 
 * 2019年2月27日
 */
public class Person {
    private String userName;
    private Integer userAge;

    public Person(String userName, Integer userAge) {
        super();
        this.userName = userName;
        this.userAge = userAge;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getUserAge() {
        return userAge;
    }

    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }

    @Override
    public String toString() {
        return "Person [userName=" + userName + ", userAge=" + userAge + "]";
    }

}
package com.gather;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * 
 * @author yyx 2019年2月27日
 */
public class LIstPractise {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        Person p1 = new Person("张三", 22);
        Person p2 = new Person("李四", 23);
        Person p3 = new Person("王五", 18);
        list.add(p1);
        list.add(p2);
        list.add(p3);

        // 第一种遍历方式:for循环
        for (int i = 0; i < list.size(); i++) {
            Person person = list.get(i);
            System.out.println(person);
        }
        System.out.println("----------------");
        // 第二种遍历方式:foreach
        for (Person person : list) {
            System.out.println(person);
        }
        System.out.println("----------------");
        // 第三种遍历方式:Iterator
        Iterator<Person> iterator = list.iterator();
        while (iterator.hasNext()) {
            Person person = iterator.next();
            System.out.println(person);
        }
        System.out.println("----------------");
        
        LinkedList<Person> linkedList=new LinkedList<>();
        linkedList.addFirst(p3);
        linkedList.add(p2);
        linkedList.addLast(p1);
        
        //getFirst()  返回此列表中的第一个元素
        System.out.println(linkedList.getFirst());
        //getLast()  返回此列表中的最后一个元素
        System.out.println(linkedList.getLast());        
        System.out.println("----------------");
        
        //toArray()  以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
        Object[] persons=linkedList.toArray();
        System.out.println(persons[0]);
    }
}

   3.ArrayList和LinkedList的区别

  • ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构 
  • 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针 
  • 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
  • ArrayList没有实现Queue队列接口,LinkedList实现了Queue接口

   4.Vector

     Vector是线程安全的,底层是基于动态数组实现

     Vector常用方法:

  •       add(E element)  将指定的元素追加到此Vector的末尾
  •       add(int index,E element)  在此Vector中的指定位置插入指定的元素 
  •       elementAt(int index)  返回指定索引处的组件
  •       get(int index)  返回此向量中指定位置的元素
  •       removeElementAt(int index)  删除指定索引处的组件
  •       removeRange(int fromIndex,int toIndex) 从此列表中删除所有索引为 fromIndex (含)和 toIndex之间的元素
package com.gather;

import java.util.Iterator;
import java.util.Vector;
/**
 * 大小可以动态变化,其存储由容器自动处理
 * @author yyx 
 * 2019年2月28日
 */
public class VectorPractise {
    public static void main(String[] args) {
        Vector<Person> vector = new Vector<>();
        Person p1 = new Person("张三", 22);
        Person p2 = new Person("李四", 23);
        Person p3 = new Person("王五", 18);
        vector.add(p1);
        vector.add(p2);
        vector.add(p3);

        Iterator<Person> iterator = vector.iterator();
        while (iterator.hasNext()) {
            Person person = iterator.next();
            System.out.println(person);
        }
    }
}

     

猜你喜欢

转载自www.cnblogs.com/fengfuwanliu/p/10430780.html