集合2

 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) 集合中的元素存储位置随机打乱
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值