集合框架

一、散列表 Map

散列表概念
1) 容量 

    散列表中散列数组大小
2) 散列运算

    key->散列值(散列数组下标)的算法,如: "mm".hashCode()%10->8
3) 散列桶

    散列值相同的元素的”线性集合“
4) 加载因子 

    就是散列数组加载率,一般小于 75%性能比较理想,就是元素数量/散列数组大小,如:7/10=70%
5) 散列查找 

根据 Key 计算散列值,根据散列值(下标)找到散列桶,在散列桶中顺序比较 Key, 如果一样, 就返回 value散列表中 Key 不同, Value 可以重复 。

二、HashMap

HashMap 以键-值对(关键字:值)的形式存储对象,关键字 key 是唯一的、不重复的。
  ● key 可以是任何对象,Value 可以任何对象。
  ●(key:value)成对放置在集合中。
  ● 重复的 key 算一个,重复添加是替换操作(会覆盖原来的元素)。
  ● 根据 key 的散列值计算散列表,元素按照散列值(丌可见)排序。
  ● HashMap 默认的容量:16 ,默认加载因子(加载率) 0.75。
  ● HashMap 根据 key 检索查找 value 值
 。


HashMap 可以在构造时指定参数:初始容量和加载因子,一般使用默认


案例:HashMap


HashMap常用的方法

  ● clear();
  ● containsKey(Object key);
  ● containsValue(Object value);
  ● get();
  ● isEmpty();
  ● keySet(); 

     返回所有的 key(注意:返回值都放入 set 集合中)
  ● put(key , value) ;

     向 Map 中加入元素
  ● remove(Object o);
  ● size() ;


HashMap和Hashtable区别

  ● HashMap 新,非线程安全,不检查锁,快。
  ● Hashtable 旧 (JDK1.2 版本以前),线程安全,检查锁,慢一点(差的很小)。
  ● HashMap 较常用,HashMap 和 HashTable 的比较常出现于面试题
 。


三、集合框架(Collection 和 Map)

集合框架包括集合不映射(Collection and Map), 以及它们的子类(容器类)。

  ● List:元素有先后次序的集合, 元素有 index 位置, 元素可以重复,继承自 Collection 接口,

     实现类: ArrayList, Vector, LinkedList
  ●
Set:
元素无续, 丌能重复添加, 是数学意义上的集合, 继承自 Collection 接口

     实现类: HashSet(是一个只有 Key 的 HashMap)
  ● Collection:集概念, 没有说明元素是否重复和有序, 使用集合的跟接口, 很少直接使用
     其他集合都是实现类: ArrayList, HashSet
  ● Map:描述了(key: value)成对放置的集合,key 不重复,Value 可以重复(key 重复算一个)
     实现类: HashMap(散列表算法实现)
     TreeMap(二叉排序树实现,利用 Key 排序)
     Map 适合检查查找

集合(Collection)框架,掌握常用的 3 个即可,如下图所示:


  ● Collection 接口 表示集合的概念
     List 接口
     Set 接口
   List 接口 表示有序线性表的概念
     ArrayList 底层实现是数组
     LinkedList 底层实现是链表
   Set 接口 表示无序不重复的概念
     HashSet 


HashSet案例:

关于 set 接口(HashSet)的测试,如下所示:





四、泛型

泛型是 Java5 以后提出的语法现象,作用是在编译期检查的类型约束(运行期丌检查泛型),泛型可以用来约束类中元素的类型 。


案例:



五、集合的迭代
集合的迭代,是一种遍历算法。
  ● 迭代操作举例:播放列表的“ 逐个播放”;将扑克牌“ 逐一发放”
  ● java 使用 Iterator 接口描述了迭代模式操作Iterator 中的方法,与门为
while 循环设计
  ● Iterator 的实例可以从集合对象获得,是这个集合的一个元素序列视图,默认包含一个操作游标(在第一个元素之前)
     hasNext()方法,可以检查游标是否有下一个元素
     next() 方法,移动游标到下一个元素,并丏返回这个元素引用
     使用
while 循环配合这个两个方法, 可以迭代处理集合的所有元素
  ● 迭代时可以使用迭代器 remove() 方法删除刚刚迭代的元素在迭代过程中
     迭代时不能使用集合方法(add, remove, set) 更改集合元素!

案例Iterator:


hasNext()和 next()方法是模式化的,配合 while 循环使用。
注意:每调用一次 next(),游标会向后移动一位。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值