课程名称: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集合的三种遍历方式
//利用for循环遍历所有key,再获取value
public void doForLoop(Map map){
Set<String> keys = map.keySet();
for(String k : keys){
System.out.println(k + ":" + map.get(k));
}
}
//利用forEach方法+Lambda表达式循环遍历(推荐)
public void doForEach(Map map){
map.forEach((key,value) -> {
System.out.println(key + ":" + value);
});
}
//使用迭代器对象Iterator循环遍历每一个Entry对象,通过Entry对象获取键值对
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.getSn().compareTo(o1.getSn());
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);
}
课程截图
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦