1.java集合框架
集合顶层Collection包含List和Set。
List的实现类包括ArrayList和LinkedList;
Set的实现类 包括HashSet(无序)和TreeSet(有序);
接口Map 实现类包括HashMap(无序)和TreeMap(有序)
数组和集合的区别:a、数组长度固定,集合长度可变
b、数组存储的是同一种类型的元素,集合可以存储不同类型的数据
c、数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用类型
Collection接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象
List 默认容量为10个;超出容量后,之后每次增加当前容量的50%
2、Collection集合的方法
a、添加功能:
boolean add(E e);//将指定的元素追加到此列表的末尾,返回boolean值
boolean add(int index, E element);//将指定的元素插入此列表中的指定位置
boolean addAll(Collection c);//添加一个集合的元素
b、删除功能:
void clear();//从此集合删除所有元素
boolean remove(int index);//删除该索引处的元素
boolean remove(Object o);//删除指定的元素
c、判断功能:
boolean contains(Object o);//如果此列表中包含指定的元素,则返回true
boolean containsAll(Collection c);//判断集合中是否包含指定的集合元素
boolean isEmpty();//判断集合是否为空,集合是否为空
d、获取功能:
get(int index);//返回此列表中指定位置的元素
indexOf(Object o);//返回此列表中指定元素的第一次出现的索引,不包含则返回-1
e、交集功能:
boolean retainAll(Collection c);//两个集合都有的元素
假设有A、B两个集合,A对B做交集,最终结果保存在A中,B不变;返回值表示A是否发生过改变
f、长度功能:
int size();//返回此列表的元素数
set(int index,E element);用指定的元素替换列表中制动位置的元素
3、ArrayList 与LinkedList的区别
ArrayList 实现了长度可变的数组,在内存分配连续的空间。遍历元素和随机访问元素
的效率比较高,查询效率高。
LinkedList采用链表存储方式。插入,删除元素时效率比较高。
4、Map集合
Map<key,value> 接口 专门处理键值映射数据的存储,可以根据键实现对值得操作
常用的实现类是HashMap
put(K key,V value);//将制定的值与此映射中的指定的键关联
keySet();//返回此地图中包含的键的Set视图
remove(Object key);//从地图中删除指定键的映射
get(Object key);//返回到指定键所映射的值,或null
containsKey(Object key);//如果此映射包含指定键的映射,则返回true
遍历Map集合:a、使用迭代器Iterator
获取Iterator:Collection接口的iterate()方法
boolean hasNext();//判断是否存在另一个课访问的元素
Objiect next();//返回要访问的下一个元素(获取元素并移动到下一噶尔位置)
Iterator it= c.keySet().iterator();//获取Iterator
//hasNext 判断 next() 取出
while (it.hasNext()) {
System.out.println(c.get(it.next())); //不要多次使用it.next()方法
} 每次使用都是访问一个对象
b、增强型的for循环
for(基本类型 别名:集合名 ){ }
5、Vector和ArrayList的异同
实现原理、功能相同,可以互用
主要区别:a、Vector线程安全。ArrayList重速度轻安全,线程非安全
b、长度需增长时,Vector默认增长一倍,ArrayList增长50%
6、Hashtable和HashMap的异同
实现原理、功能相同,可以互用
主要区别:a、Hashtable继承Dictionary类,HashMap实现Map接口
b、Hashtable线程安全,HashMap线程非安全
c、Hashtable不允许null值,HashMap允许null值
7、泛型<> 数据变的安全
解决强制类型转换时容易出现的异常:
List的get(int index)方法获取元素,需要强制转换
Map的get(Objet key)方法获取元素,需要强制转换
Iterator的next()方法获取元素
8、HashCode的特性
a、HashCode的存在最主要用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于
确定对象的存储地址;
b、如果两个对象相同,equals方法一定返回true,并且这两个对象的HashCode一定相同
c、这两个对象的HashCode相同 ,并不一定表示这两个对象就相同,即equals()不一定
为true,只能说明这两个对象在一个散列存储结构中。
d、如果两个对象的equals方法被重写,那么对象的HashCode也需要重写
哈希算法也称为散列算法,是将数据依特定的算法直接指定到一个地址上