集合

转载 2016年06月02日 11:26:49
1:集合
Collection(单列集合)
List(有序,可重复)
ArrayList
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
Set(无序,唯一)
HashSet
底层数据结构是哈希表。
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可

LinkedHashSet
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。
TreeSet
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象
Map(双列集合)
A:Map集合的数据结构仅仅针对键有效,与值无关。
B:存储的是键值对形式的元素,键唯一,值可重复。

HashMap
底层数据结构是哈希表。线程不安全,效率高
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可
LinkedHashMap
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。
Hashtable
底层数据结构是哈希表。线程安全,效率低
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可
TreeMap
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象

2:到底使用那种集合
看需求。

是否是键值对象形式:
是:Map
键是否需要排序:
是:TreeMap
否:HashMap
不知道,就使用HashMap。

否:Collection
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不知道,就使用HashSet

否:List
要安全吗:
是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList
不知道,就使用ArrayList
不知道,就使用ArrayList

3:集合的常见方法及遍历方式
Collection:
add()
remove()
contains()
iterator()
size()

遍历:
增强for
迭代器

|--List
get()

遍历:
普通for
|--Set

Map:
put()
remove()
containskey(),containsValue()
keySet()
get()
value()
entrySet()
size()

遍历:

1,根据键找值 

                       Set<T> s=map.keySet(); 

                      for(T t:s){    value=map.get(t);}

2,根据键值对对象分别找键和值

                       Set<Map.Entry<T, V> > s=map.entrySet();

                      for(Map.Entry<T, V> m: s){

                              T t=m.getKey();

                             V v=m.getValue()

                         }

java集合分类大全

List: 实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。ArrayList,LinkedList是不同步的,而Vestor是同步的。 ArrayL...
  • x_love_x
  • x_love_x
  • 2016年07月14日 11:12
  • 486

python集合常用方法

一、列表 新建:list = [] 不要求内部元素类型相同 查、改:下标索引:list[0]、list[-1] 删:删除指定下标元素:del(list[1]) 删:删除并返回指定下标的元素: list...
  • u013573813
  • u013573813
  • 2016年12月17日 23:47
  • 5705

JAVA集合框架的总结(集合嵌套)

先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。...
  • ckj121
  • ckj121
  • 2015年08月02日 00:17
  • 1276

set集合和 list集合 的区别

ArrayList 是数组结构,可以存储重复对象,查询速度快,可以进行增删改查;LinkedList是链表结构,默认为先进后出,可以自定义为堆栈(先进后出)或队列(先进先出),对应方法,xxxFirs...
  • franky814
  • franky814
  • 2014年12月10日 23:26
  • 1230

List集合知识总结

在编程过程中,会很频繁的使用集合,集合的相关知识也非常重要,也是每一个开发人员必须掌握的知识。 一:集合的概念 集合:保存数量不确定的数据,以及保存具有映射关系的数据的容器,简单的理解就是用于存储数量...
  • yuanjian19900610
  • yuanjian19900610
  • 2013年03月11日 23:51
  • 4583

JAVA基础知识之Set集合

Set集合的基本特征是不记录添加顺序,不允许元素重复(想想是为什么)。最常用的实现类是HashSet. 本文将要介绍以下内容 HashSet类 HashSe的特征HashSet的equa...
  • solafy
  • solafy
  • 2016年10月28日 23:22
  • 5900

Java基础之集合知识点总结一

集合----是用于存储对象的一个工具,集合和数组的特点
  • u011460827
  • u011460827
  • 2014年12月02日 12:40
  • 767

java集合Collection(单列集合)、Map(双列)

———— 一、集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer...
  • a23006239
  • a23006239
  • 2015年08月12日 13:07
  • 2598

Java基础——集合(一)——集合体系、Collection集合

一、集合概述          Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。          ...
  • haovip123
  • haovip123
  • 2015年05月02日 00:09
  • 12517

Intent传递集合数据

Intent传递集合数据
  • coderinchina
  • coderinchina
  • 2014年10月16日 19:50
  • 3289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合
举报原因:
原因补充:

(最多只允许输入30个字)