课程名称:Java体系课
章节名称:Java常见集合与应用(Map)
课程内容:
- Map映射的特点
- HashMap
- LinkedHashMap
- TreeMap
- Map集合的遍历
- Collections工具类实现排序
学习收获
- Map映射特点
Map用于保存具有映射关系的数据,每组映射都是key(键)与Value(值)组合而成
Key与Value可以是任何引用类型数据,但是Key通常是String
Map中的key不允许重复,重复为同一个key设置value,后者value会覆盖前者value
每一对键值组成一个Entry对象
- HashMap
HashMap是Map接口的典型实现类,对key进行无序存储
HashMap不能保证数据按存储顺序读取,且key全局唯一,按key的哈希值顺序
Java先有Map后有Set,HashSet从HashMap精简而来
使用方法:
1. get(key),返回指定key的value值
2. containsKey(key),containsValue(value),返回boolean值查看传入的key或value是否存在
3. remove(key)方法将指定的键值对删除,并将value返回
- linkedhashmap
与HashMap使用基本一致,在hashmap增加了链表结构,可以实现显示顺序和放入顺序一致。只要前面增加linked放入的顺序和写入顺序可以一致。
- TreeMap
TreeMap存储key-value对时,需要根据key对节点进行排序
TreeMap支持两种Key排序:自然排序与定制排序
与TreeSet相同,TreeMap也是基于红黑树结构对数据进行排序
- Map集合的三种遍历方式
public void doForLoop(Map map){
Set<String> keys = map.keySet();
for(String k : keys){
System.out.println(k + ":" + map.get(k));
}
}
public void doForEach(Map map){
map.forEach((key,value) -> {
System.out.println(key + ":" + value);
});
}
public void doIterator(Map map){
Iterator<Map.Entry<String,Object>> itr = map.entrySet().iterator();
while(itr.hasNext()){
Map.Entry<String,Object> entry = itr.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
}
- Collections工具类实现排序
Collections.sort() 系统提供 默认对数据进行升序排列。调用sort()后,原始数据也会被排序
通过实现接口Comparator,将实现类作为参数传入Collections.sort(list,new Comparator());来自定义排序
private class CustomComparator implements Comparator<Goods>{
@Override
public int compare(Goods o1, Goods o2) {
return o2.getTitle().compareTo(o1.getTitle());
}
}
public List<Goods> sort(List<Goods> list){
CustomComparator comp = new CustomComparator();
Collections.sort(list, comp);
return list;
}
public static void main(String[] args) {
List<Goods> goodsList = new ArrayList<>();
goodsList.add(new Goods("18827382190", "商品A"));
goodsList.add(new Goods("83219078978", "商品B"));
goodsList.add(new Goods("83241781237", "商品C"));
goodsList.add(new Goods("18579831426", "商品D"));
System.out.println("排序前");
System.out.println(goodsList);
System.out.println("排序后");
List<Goods> list = new CustomObjectSortSample().sort(goodsList);
System.out.println(list);
}
课程截图
打开App,阅读手记