问题总结:
1) is a 和like a的区别.
区分在程序的设计上
2) JDK中哪些类是不能继承的?
JDK中的类写着final的类就不能被继承.
3) 什么时候覆写hashCode,equals?
当数据要存在HashSet时需要覆写HashCode和equals.
4)comparable,comparator区别
对象自己具备比较性用comparable接口实现,让集合自身也具有比较性.
5) 集合中接口不需要覆写.
Map<K,V>双列集合
Map集合包含两个类型参数:键(Key)和值(Value).
HashMap: 基于哈希表数据结构的双列集合,不允许重复键(Key),允许null作为键或者值,没有迭代器.
keySet()方法将集合中的键存储到Set集合中,迭代Set集合可以获取到键,通过get方法获取到值.
entrySet()方法,将集合中键值映射关系保存在Map.Entry对象中,保存到Set中.
put(key,value)方法,将键值存储到集合中.
get(Objectkey)传入键,返回对应的值,如果没有找到对应的键返回null.
remove(Objectkey)通过键删除该映射关系,前提是存在这个映射关系.
isEmpty()如果此映射不包含键值映射关系,则返回true.
提取方式(1)---工作开发中使用
//新建一个HashMap集合
HashMap<String,Integer>hm = new HashMap<String,Integer>();
//向HashMap内分别存入键(Key)和值(Value)
hm.put("zhangsan1",21);
hm.put("lisi",22);
//将HashMap集合的键(Key)返回到Set集合内,这里泛型只写键值的数据类型
Set<String>s = hm.keySet();
//创建Set集合的Iterator迭代器,由于Set集合中的数据类型是String,所以泛型也设置String
Iterator<String>it = s.iterator();
//while循环取值
while(it.hasNext()){
//迭代器取出Set集合内存储的键(Key)并强制转换成String类型
Stringst = (String)it.next();
//HashMap集合使用get方法获取值(Value)
Integerin = hm.get(st);
//打印键(Key)和值(Value)
System.out.println(st+"..."+in);
}
提取方式(2)---面试使用
//新建一个HashMap集合
HashMap<String,Integer>hm = new HashMap<String,Integer>();
//向HashMap内分别存入键(Key)和值(Value)
hm.put("zhangsan1",21);
hm.put("lisi",22);
//使用Map.Entry将对应关系封装成对象返回,用Set集合接收.这个关系用Map.Entry对象描述,Map.Entry的泛型是这个集合中的键值.
//得到的这个关系需要将这个关系存储到Set集合中,所以Set集合的泛型就是这个关系.
//entrySet返回集合对应关系
Set<Map.Entry<String,Integer>>set = hm.entrySet();
//创建Set迭代器,Map没有迭代器,泛型跟Set相同.
Iterator<Map.Entry<String,Integer>>it = set.iterator();
//判断下个元素是否存在
while(it.hasNext()){
//定义个Map.Entry类型变量接收Set集合内的元素
Map.Entry<String,Integer>me = it.next();
//getKey方法提取键
Strings = me.getKey();
//getValue方法提取值
Integerin = me.getValue();
//打印输出键值
System.out.println(s+"==="+in);
}