你的位置:首页 > 软件开发 > Java > Java 集合框架

Java 集合框架

发布时间:2016-10-19 17:00:16
Java集合框架大致可以分为五个部分:List列表,Set集合、Map映射、迭代器、工具类List 接口通常表示一个列表(数组、队列、链表栈),其中的元素 可以重复 的是:ArrayList 和LinkedList,另外还有不常用的Vector。LinkedList实现来 ...

Java集合框架大致可以分为五个部分:List列表,Set集合、Map映射、迭代器、工具类

List 接口通常表示一个列表(数组、队列、链表

栈),其中的元素 可以重复 的是:ArrayList 和LinkedList,另外还有不常用的Vector。LinkedList实现来Queue接口,因此也可以作为队列使用。

Set接口通常表示一个集合,其中的元素 不可以重复 (通过hashcode和equals函数保证),常用的实现类有HashSet和TreeSet

Map是一个 映射接口 ,其中的每个元素都是一个 key-value键值对 ,同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap

HashMap、WeakHashMap等实现类都通过继承AbstractMap实现的,另外,不常用的HashTable直接实现了Map接口。

Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。

ArrayList

ArrayList的内部实现是基于基础的对象数组的

特点:

  • 顺序表
  • 大小可变
  • 允许null元素
  • 线程不同步、查询速度快、增删满

LinkedList

LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问

一般大家都知道ArrayList和LinkedList的大致区别:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。

3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ArrayList的内部实现是基于基础的对象数组的 , LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对LinkedList而言,访问列表中的某个指定元素没有更快的方法了。 它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList) ,因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。

public class ArraylistandLinkedlist {  public static final int N = 50000;  public static List values;  static {    Integer vals[] = new Integer[N];    Random r = new Random();    for (int i = 0, currval = 0; i < N; i++) {      vals[i] = new Integer(currval);      currval += r.nextInt(100) + 1;    }    values = Arrays.asList(vals);  }  static long timeList(List lst) {    long start = System.currentTimeMillis();    for (int i = 0; i < N; i++) {      int index = Collections.binarySearch(lst, values.get(i));      if (index != i)        System.out.println("***错误***");    }    return System.currentTimeMillis() - start;  }  public static void main(String args[]) {    System.out.println("ArrayList消耗时间:" + timeList(new ArrayList(values)));    System.out.println("LinkedList消耗时间:" + timeList(new LinkedList(values)));  }}

原标题:Java 集合框架

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。