集合 list Arraryist LinkedList Vector HashSet treeSet comparable Iterator

集合

•Java的集合类是一种特别有用的工具类,用于存储数量不等的多个对象,所以称为容器类(所有集合类都位于java.util包下。)

•Java集合体系:

  1.Set:无序、不可重复的集合

  2.List:有序、重复的集合

  3.Map:具有映射关系的集合

•Java集合就像一种容器,可以把多个对象

  (对象的引用)“丢进”容器中

•JDK1.5之前,把有的对象当成Object类型处理

   JDK1.5后,增加了泛型,可以记住容器中对 象的数据类型

数组和集合

Ø数组的优点

  使用数组可以将一组元素作为一个整体来处理

Ø数组的不足

  长度固定,无法动态扩展

  有序线性结构,数据结构单一

集合的优势:

长度动态扩展
数据结构丰富 List, Set, Map

提供丰富的API,开发效率高

Collection接口是Set、List和Queue接口的父接口,所有该接口里定义的方法是Set、List和Queue集合共用的方法

Iterator特性


Iterator仅用于遍历集合
Iterator本身并不提供盛装对象的能力
创建Iterator对象,必须有一个被迭代的集合
遍历的同时可以修改对象

ØList是Collection的子接口
ØList存放的元素是有顺序的
ØList存放的元素可以重复
ØList中存放的元素都有一个整型的下标,可以根据下标访问元素。
ØList接口的类有ArrayList、LinkedList、Vector等


ØList接口还额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。


ØListIterator与Iterator比较:

  1.ListIterator增加了向前迭代的功能(Iterator只能向后迭代)

  2.ListIterator还可通过add方向List集合中添加元素(Iterator只能删除元素)


Arraylist

底层用数组实现

查询效率高,增删效率低,线程不安全


LinkedList

底层用双向循环链表实现

查询效率低,增删效率高


LinkedList的常用特有方法:

addFirst()             addLast() 

 getFirst()             getLast()

removeFirst()       removeLast()


如果集合中没有元素,这些方法

在调用时会抛出运行时异常

NoSuchElementException


JDK1.6中给出了代替方案:

peekFirst、peekLast获取元素,不删除元素

pollFirst、pollLast获取元素,删除元素

没有元素时返回null


Vector

底层用数组实现List接口的另一个类

特点:重量级,占据更多的系统开销,线程安全


ArrayList、LinkedList、Vector之间的区别?

Arraylist

底层用数组实现

查询效率高,增删效率低,线程不安全

LinkedList

底层用双向循环链表实现

查询效率低,增删效率高

Vector

底层用数组实现List接口的另一个类

特点:重量级,占据更多的系统开销,线程安全


Set接口是Collection的子接口
相当于数学中的”集合”
Set中的元素不允许重复
添加到set的元素不会保存顺序

HashSet 是最常用的Set 实现类

每次存储对象的时候, 调用对象的hashCode()方法, 计算一个哈希值.在集合中查找是否包含哈希值相同的元素.如果没有哈希值相同元素, 直接存入.如果有哈希值相同的元素, 逐个使用equals()方法比较比较结果全为false就存入.如果比较结果有true则不存.TreeSet集合中的元素除了没有顺序和不能重复外,还会自然排序,这便是该集合的特点

TreeSet存储对象的时候, 可以排序,但是需要实现Comparable接口。

所以,Integer能排序,String能排序。

如果想把自定义类的对象存入TreeSet进行排序, 那么必须实现Comparable接口,重写compareTo()方法。

在方法内定义比较算法, 根据大小关系, 返回正数/负数/零,

在使用TreeSet存储对象的时候,add()方法内部就会自动调用compareTo()方法进行比较, 根据比较结果使用二叉树形式进行存储。


Comparable

此接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序,类的compareTo 方法被称为它的自然比较方法


int compareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数



猜你喜欢

转载自blog.csdn.net/qq_15007327/article/details/76275426
今日推荐