Map:
双列集合
map集合中的元素都是成对出现,成对存储的
map集合中的元素都是以一对键和值的形式组成存在的,称为键值对,理解为夫妻对
map集合中的键不能重复存储,值可以重复
map集合中的每一个键 对应着一个值
Map接口和Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构只针对键有效,跟值无关
Collection集合的数据结构是针对元素有效
方法:
添加功能:
V put(K key, V value) 把指定的键与指定的值添加到Map集合中
删除功能:
void clear() 清空集合中的元素
V remove(Object key) 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值
判断功能:
boolean containsKey(Object key) 判断指定的键,在Map集合中是否存在
boolean containsValue(Object value) 判断指定的值,在Map集合中是否存在
boolean isEmpty() 判断Map集合是否为空的集合
获取功能:
Set<Map.Entry<K,V>> entrySet() 获取到Map集合中所有的键值对对象的集合(Set集合)
V get(Object key) 根据指定的键,在Map集合中获取对应的值
Set<K> keySet() 获取Map集合中所有的键,存储到Set集合中
int size() : 获取Map集合中 键值对元素的个数
Collection<V> values(): 获取Map集合中所有的值,存储到Collection集合中
---------------------
Map集合遍历的两种方式
方式1:根据键找值
//方式1 键找值的方式
//a, 获取到Map集合中所有的键
//b, 遍历键的集合,获取到每一个键
//c, 通过键,找到对应的值
//获取到Map集合中所有的键
Set<String> keys = map.keySet();
//遍历键的集合,获取到每一个键
for (String key : keys) {
//通过键,找到对应的值
Student s = map.get(key);
System.out.println( key + "..." + s.getName() + "..." + s.getAge() );
}
方式2:根据键值对对象找键和值
//a, 获取Map集合中所有的键值对元素,返回对应的集合
//b, 遍历键值对元素集合,获取到每一个键值对元素对象
//c, 通过键值对元素对象,获取对应的键,和对应的值
//获取Map集合中所有的键值对元素,返回对应的集合
Set< Map.Entry<String, Student>> entrySet = map.entrySet();
//遍历键值对元素集合,获取到每一个键值对元素对象
for (Map.Entry<String, Student> entry : entrySet) {
//通过键值对元素对象,获取对应的键,和对应的值
//找键
String key = entry.getKey();
//找值
Student s = entry.getValue();
//打印
System.out.println( key+"..."+s.getName()+"..."+s.getAge() );
}
----------------------------------
* HashMap:
* 特点:
* 他是Map集合的子集合
* 底层采用哈希表结构
* HashMap集合中的key不能重复,如何保证键不能重复?
* 重写hashCode() 与 equals()
* 不能保证元素存与取的顺序完全一致
* 允许使用 null 值和 null 键
* 线程不同步,效率高
---------------------------------
* LinkedHashMap:
* 特点:
* 有序并唯一的Map集合
* 有序: Map集合中元素的存与取的顺序一致
* 元素唯一: Map集合中的键 不能重复存储
*
* 有序: 是由 链表结构来实现的
* 元素唯一: 是由 哈希表结构来实现的
---------------------------------
* TreeMap:
* 特点:
* 底层是二叉树实现的
* TreeMap集合中的键是如何保证唯一并排序的?
* 方式1,通过 自然排序接口 实现
* Comparable接口
* 重写方法 compareTo(T obj)
*
* 方式2,通过比较器接口 实现
* Comparator接口
* 重写方法 compare(T obj1, T obj2)
-----------------------------------
集合的嵌套
里面里面的元素是一个集合
* new ArrayList< ArrayList<String> >();
* new HashMap<String, HashMap<String,String> >;
* new HashMap<String, ArrayList<String> >
* new LinekedList< HashMap<String,String> >
-----------------------------------
1, HashMap和Hashtable的区别?
HashMap:
他是Map集合的子集合
底层哈希表结构
键和值 可以存储 null
jdk1.2 线程不同步,效率高
Hashtable:
他是Map集合的子集合
底层哈希表结构
键和值 不能存储为 null
jdk1.0 线程同步,安全
2, List,Set,Map等接口是否都继承子Map接口?
List 不继承 Map接口, List继承的是 Collection集合
Set 不继承 Map接口,Set 继承的是 Collection集合
Collection 单列集合, 掌握Collection 集合中的方法
|- List, 知道List集合中的方法
|- ArrayList
|- Vector
|- LinkedList
|- Set
|- HashSet
|- LinkedHashSet
|- TreeSet
Map 双列集合, 掌握 Map集合中的方法
|- HashMap
|- LinkedHashMap
|- TreeMap
------------------------------------------
* Collections: 集合工具类
* Collection: 单列集合的顶层接口
* Map : 双列集合的顶层接口
*
* Collections中的方法:
public static <T> void sort(List<T> list) 排序
public static <T> int binarySearch(List<?> list,T key) 二分查找
public static <T> T max(Collection<?> coll) 最大值
public static void reverse(List<?> list) 反转
public static void shuffle(List<?> list) 集合中的元素存储位置随机打乱
双列集合
map集合中的元素都是成对出现,成对存储的
map集合中的元素都是以一对键和值的形式组成存在的,称为键值对,理解为夫妻对
map集合中的键不能重复存储,值可以重复
map集合中的每一个键 对应着一个值
Map接口和Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构只针对键有效,跟值无关
Collection集合的数据结构是针对元素有效
方法:
添加功能:
V put(K key, V value) 把指定的键与指定的值添加到Map集合中
删除功能:
void clear() 清空集合中的元素
V remove(Object key) 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值
判断功能:
boolean containsKey(Object key) 判断指定的键,在Map集合中是否存在
boolean containsValue(Object value) 判断指定的值,在Map集合中是否存在
boolean isEmpty() 判断Map集合是否为空的集合
获取功能:
Set<Map.Entry<K,V>> entrySet() 获取到Map集合中所有的键值对对象的集合(Set集合)
V get(Object key) 根据指定的键,在Map集合中获取对应的值
Set<K> keySet() 获取Map集合中所有的键,存储到Set集合中
int size() : 获取Map集合中 键值对元素的个数
Collection<V> values(): 获取Map集合中所有的值,存储到Collection集合中
---------------------
Map集合遍历的两种方式
方式1:根据键找值
//方式1 键找值的方式
//a, 获取到Map集合中所有的键
//b, 遍历键的集合,获取到每一个键
//c, 通过键,找到对应的值
//获取到Map集合中所有的键
Set<String> keys = map.keySet();
//遍历键的集合,获取到每一个键
for (String key : keys) {
//通过键,找到对应的值
Student s = map.get(key);
System.out.println( key + "..." + s.getName() + "..." + s.getAge() );
}
方式2:根据键值对对象找键和值
//a, 获取Map集合中所有的键值对元素,返回对应的集合
//b, 遍历键值对元素集合,获取到每一个键值对元素对象
//c, 通过键值对元素对象,获取对应的键,和对应的值
//获取Map集合中所有的键值对元素,返回对应的集合
Set< Map.Entry<String, Student>> entrySet = map.entrySet();
//遍历键值对元素集合,获取到每一个键值对元素对象
for (Map.Entry<String, Student> entry : entrySet) {
//通过键值对元素对象,获取对应的键,和对应的值
//找键
String key = entry.getKey();
//找值
Student s = entry.getValue();
//打印
System.out.println( key+"..."+s.getName()+"..."+s.getAge() );
}
----------------------------------
* HashMap:
* 特点:
* 他是Map集合的子集合
* 底层采用哈希表结构
* HashMap集合中的key不能重复,如何保证键不能重复?
* 重写hashCode() 与 equals()
* 不能保证元素存与取的顺序完全一致
* 允许使用 null 值和 null 键
* 线程不同步,效率高
---------------------------------
* LinkedHashMap:
* 特点:
* 有序并唯一的Map集合
* 有序: Map集合中元素的存与取的顺序一致
* 元素唯一: Map集合中的键 不能重复存储
*
* 有序: 是由 链表结构来实现的
* 元素唯一: 是由 哈希表结构来实现的
---------------------------------
* TreeMap:
* 特点:
* 底层是二叉树实现的
* TreeMap集合中的键是如何保证唯一并排序的?
* 方式1,通过 自然排序接口 实现
* Comparable接口
* 重写方法 compareTo(T obj)
*
* 方式2,通过比较器接口 实现
* Comparator接口
* 重写方法 compare(T obj1, T obj2)
-----------------------------------
集合的嵌套
里面里面的元素是一个集合
* new ArrayList< ArrayList<String> >();
* new HashMap<String, HashMap<String,String> >;
* new HashMap<String, ArrayList<String> >
* new LinekedList< HashMap<String,String> >
-----------------------------------
1, HashMap和Hashtable的区别?
HashMap:
他是Map集合的子集合
底层哈希表结构
键和值 可以存储 null
jdk1.2 线程不同步,效率高
Hashtable:
他是Map集合的子集合
底层哈希表结构
键和值 不能存储为 null
jdk1.0 线程同步,安全
2, List,Set,Map等接口是否都继承子Map接口?
List 不继承 Map接口, List继承的是 Collection集合
Set 不继承 Map接口,Set 继承的是 Collection集合
Collection 单列集合, 掌握Collection 集合中的方法
|- List, 知道List集合中的方法
|- ArrayList
|- Vector
|- LinkedList
|- Set
|- HashSet
|- LinkedHashSet
|- TreeSet
Map 双列集合, 掌握 Map集合中的方法
|- HashMap
|- LinkedHashMap
|- TreeMap
------------------------------------------
* Collections: 集合工具类
* Collection: 单列集合的顶层接口
* Map : 双列集合的顶层接口
*
* Collections中的方法:
public static <T> void sort(List<T> list) 排序
public static <T> int binarySearch(List<?> list,T key) 二分查找
public static <T> T max(Collection<?> coll) 最大值
public static void reverse(List<?> list) 反转
public static void shuffle(List<?> list) 集合中的元素存储位置随机打乱