标签:
学习集合需要掌握1136, 即一个图,一个类(Collections),三个知识点(foreach, 泛型, 自动打包和解包),六个接口(Collection, List, Set, Map, Iterator, Comparable).
1. 一个图:Map存储的是键值对,可以认为是双列Collection.
2. 一个类:java.utils.Collections类
java.utils.Collections类提供了一些静态方法实现了基于List容器的一些常用算法。
void sort(List), 对List容器内的元素排序
void shuffle(List), 对List容器内的对象进行随机排序
void reverse(List), 对List容器内的对象进行逆序排列
void fill(List, Object), 用一个特定的对象重写整个List容器
void copy(List dest, List src), 将src List容器内容复制到dest List容器
int binarySearch(List, Object), 对于顺序的List容器,采用折半查找的方法查找特定对象
3. Comparable接口:
大家或有疑问,上面那的算法是根据什么来确定容器中的对象的“大小”顺序的呢?
所有可以"排序"的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:
public int compareTo(Object obj), 改方法的返回值:
返回0, 表示this == obj
返回正数, 表示this > obj
返回负数,表示this < obj
实现了Comparable接口的类通过实现compareTo方法从而确定该类对象的排序方式。
注意重写compareTo(Object o)的时候要先判断o是不是当前类类型的:不是,就抛出一个异常;是,接着写判断逻辑
4.如何选择数据结构
衡量标准: 读的效率和改的效率
Array读快改慢,集合占用一块连续的内存
Linked改快读慢, 集合中的元素分散在内存中,通过指针相连
Hash两者之间
5.Map接口
实现Map接口的类用来存储键-值对。
Map接口的实现类有HashMap(以Hash表作为索引)和TreeMap(以Tree作为索引)等。
Map类中存储的键-值对通过键来标识,所以键的值不能重复。
常用方法:
Object put(Object key, Object value),
往容器里添加键值对,如果key已经存在,则将key对应的value的值设置为新value,返 回值是原来的value。
Object get(Object key), 找到key对应的value
,找不到,则返回 null
。
Object remove(Object key),
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
boolean containsKey(Object key),
如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value),
如果此映射将一个或多个键映射到指定值,则返回 true。
int size(),
返回此映射中的键-值映射关系数。
boolean isEmpty(),
如果此映射未包含键-值映射关系,则返回 true。
void putAll(Map m),
从指定映射中将所有映射关系复制到此映射中(可选操作)。
void clear(),
从此映射中移除所有映射关系(可选操作)。
6. 自动装箱拆箱
自动将基础类型转换为对象
自动将对象转换为基础类型
标签:
原文地址:http://www.cnblogs.com/byron0918/p/4628953.html