黑马程序员_java集合

----------- android培训java培训java学习型技术博客、期待与您交流! ------------

集合类

为什么会出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.

数组与集合类同是容器,有何不同?

数组虽然也可以存储对象,但是长度是固定的;集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象.

集合类的特点?

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象.

.集合的分类

Collection  一次存一个对象单列集合

List  可重复有索引

ArrayList 数组实现查找快

LinkedList 链表实现增删快

Vector 数组实现线程安全

Set   不可重复没索引

HashSet 使用哈希算法去重复效率高但元素无序

TreeSet 使用二叉树算法排序可以指定元素的存储顺序

LinkedHashSet HashSet的子类原理相同除了去重复之外还能保留存储顺序

Map  一次存两个对象键值对

HashMap 使用哈希算法对键去重复效率高但无序

TreeMap 使用二叉树算法排序可以自定义顺序

LinkedHashMap 使用哈希算法去重复并且保留存储顺序

Hashtable 类似HashMap, 线程安全效率略低不允许null键和null

Properties Hashtable的子类用来操作配置文件

.Map集合

1.Map集合的特点

Map集合一次存储两个对象一个键对象一个值对象

键对象在集合中是唯一的可以通过键来查找值

2.Map常用方法

put() 存储一条记录一个键和一个值

get() 根据键对象获取值

containsKey() 判断是否包含指定的键

containsValue() 判断是否包含指定的值

remove() 根据键删除一条记录

size() Map集合中的记录数

values() 得到所有的值对象组成的一个Collection集合

3.迭代Map集合

a.keySet()

先调用keySet()方法从Map集合中获取所有Key组成的一个Set集合

迭代Set集合可以得到每一个Key

然后再调用get()方法通过Key获取每一个Value

b.entrySet()

先调用entrySet()方法从Map集合中获取所有Entry(键值对)组成的一个Set集合

迭代Set集合可以得到每一个Entry

然后再调用getKey()getValue()方法得到每一个Key和每一个Value

4.HashMap

在使用HashMap存储键值对的时候先调用Key对象的hashCode()方法计算一个哈希值Map中查找是否有相同哈希值的Key对象

如果没有哈希值相同的Key对象这个键值对直接存入

如果有哈希值相同的Key对象那么就进行equals比较

比较结果为false就存入, true则覆盖原Value

5.LinkedHashMap

HashMap的子类算法相同但保留了存储的顺序

6.TreeMap

在使用TreeMap存储键值对的时候会使用Key对象和集合中已存储的Key对象进行比较确定二叉树上的位置

比较的方式和TreeSet指定的方式相同, ComparableComparator

7.Hashtable

类似HashMap, 线程安全效率略低不允许null键和null

8.Properties

Hashtable的子类用来操作配置文件

.集合的迭代

1.Collection

Iteraotr:   通过iterator()方法得到迭代器调用hasNext()next()方法进行迭代

ForEach:    for (类型  变量名 容器) { 循环体 }

2.Map

keySet():   得到所有的键组成的Set, 遍历Set得到每一个键然后再分别获取值

entrySet(): 得到所有的Entry组成的Set, 遍历Set得到每一个Entry, 再分别getKey()getValue()

3.List

Iterator

ForEach

for: 根据索引定义for循环调用get()方法根据索引获取每一个元素

4.Vector

Iterator

ForEach

for

Enumeration: 类似Iterator, 通过elements()方法得到Enumeration, 调用hasMoreElements()nextElement()方法进行迭代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值