Java集合(本篇主要介绍List接口)

 

*集合:集合和数组一样,都是容器,都可以存放程序运行过程中的数据。但是,集合的长度是可变的,集合可以存放基本数据类型,也可以存放引用数据类型。而且集合的存储方式多种多样(数据结构)。

 

Collection:是集合类的顶级接口,继承自它的接口主要有LIist接口和Set接口,而Map接口可以产生集合。

Collections:是帮助类,提供了常用的方法。

 

常用API:java.util*  List  Collection  Map   Set

List有序集合,可以通过下标访问集合中的元素。

允许重复值,允许有多个null值

在搜索指定对象时,开销较大,但在删除添加对象时较为高效。

 

List的常用操作

add(E e):将指定元素添加到列表的尾部

add(Index ,e):将指定元素添加到指定位置

clear()移除此列表中的所有元素

ensureCapacity (int minCapacity):增加容器的容量

isEmpty():判断集合是否为空

remove(index) 移除此列表中指定位置上的元素。

get(index):返回此列表中的所有元素

remove(Object o)移除此列表中首次出现的元素

set(index,e)用指定元素代替指定位置上的元素

toArray():按适当顺序返回包含此列表所有元素的数组

 containsAll(Collection<?> c) 如果collection包含指定collection中的所有元素,则返回 true

retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)保留交集

ArrayList:具有List集合的基本特性,是一个大小可变的数组。

底层实现是数组结构,可以通过下标来访问。

有序集合(存入与取出的顺序相同)

允许重复值,允许有多个null值

每个ArrayList实例在初始化时,都有一个初始容量,大小为10.

若要添加大量的数据时,最好先调用ensureCaptity()来改变容器的初始容量。

            查询速度快  get  set

            线程不同步,线程不安全,但是高效

package com.itycl.array;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

 

public class ArrayListDemo {

public static void main(String[] args) {

   List<String> list=new ArrayList<>();

   list.add("a");

   list.add("b");

   list.add("c");

   list.add("d");

   list.add("e");

  

   Iterator it=list.iterator();

   while(it.hasNext()) {

      String str = (String) it.next();

      System.out.println(str);

   } 

}

}

 

 

LinedList:具有List集合的基本特性

        底层实现是链表结构,同时支持堆,栈,队列

LinkedList具有好几套方法可供使用

允许重复值,允许null值

增删操作快add  remove

        线程不同步,线程不安全,但是高效

 

public class LinkedListDemo {

public static void main(String[] args) {

   

    LinkedList<Integer> list=new LinkedList<>();

    list.add(1);

    list.add(2);

    list.add(3);

    list.add(4);

    list.addFirst(0);

    ListIterator it=list.listIterator();

    while(it.hasNext()) {

       Integer value = (Integer) it.next();

        if(4==value) {

            it.add(5);

        }

    }

    System.out.println(list);//0,1,2,3,4,5

   

   

    list.removeLast();

    System.out.println(list);//0,1,2,3,4

   

    list.push(1);//在列表的首部添加元素

    System.out.println(list);//1,0,1,2,3,4

   

    list.pop();//在列表的首部开始删除一个元素

    System.out.println(list);//0,1,2,3,4

   

    list.peekFirst();// 获取但不移除此列表的第一个元素

    System.out.println(list);//0,1,2,3,4

   

    list.peekLast();// 获取但不移除此列表的最后一个元素

    System.out.println(list);//0,1,2,3,4

   

    list.pollFirst();// 获取并且移除此列表的第一个元素

    System.out.println(list);//1,2,3,4

   

    list.pollLast();// 获取并且移除此列表的最后一个元素

    System.out.println(list);//1,2,3

      

}

}

 

 

 

Vector同步,可变数组。

        实现了RandmoAccess接口,即提供了随机访问功能

线程安全,效率低。

 

posted @ 2018-12-02 21:09  米兰达儿  阅读(620)  评论(0编辑  收藏  举报