jdk8集合框架图

jdk8集合框架图
在这里插入图片描述
1,集合类分为List列表,Set集合,Map映射,工具类
2,特征

  • List:有序队列,每个元素都有它的索引
  • Set:不允许重复值的集合,实现方法有HashSet和TreeSet
    HashSet:依赖于HashMap,实际上通过HashMap实现
    TreeSet:依赖于TreeMap,实际上是通过TreeMap实现
  • Map:是一个映射接口,级key-value键值对
    AbstractMap是一个抽象类,实现了Map接口中的大部分API,而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。
  • Hashtable:虽然继承于Dictionary,但是实现了Map接口

附带两张ide生成的类图
在这里插入图片描述

在这里插入图片描述

注意:
由于Collection接口继承了Iterable接口,所以Collection接口可以直接使用Iterator迭代器。即List和Set可以直接调用iterator()方法,返回迭代器。
然而Map接口是没有继承iterable接口的,所以map是不能直接使用iterator迭代器。但是map接口依赖了Collection接口,换句话说,map内的方法返回结果继承了Collection接口。例如values,keySet,entrySet方法返回Collection接口的数据结构,所以,可以通过这些方法将数据读出来,然后使用迭代器。代码如下:

public class MyLocalTest {

    public static void main(String[] args) throws Exception{
        List<Integer> intList = new ArrayList<>();
        intList.add(1);
        intList.add(2);
        intList.add(3);

        Map<String,Integer> intMap = new HashMap<>();
        intMap.put("one",1);
        intMap.put("two",2);
        intMap.put("three",3);
        intMap.put("four",4);

        // list
        // 常见写法
//        Iterator<Integer> listIterator = intList.iterator();
//        while (listIterator.hasNext()){
//            int item = listIterator.next();
//            if(item == 2) listIterator.remove();
//        }
        // 1.8后提供了封装的方法removeIf,传入一个方法,可以更简洁
        intList.removeIf(item->item==2);

        // map
        // 常规写法
//        Iterator<Map.Entry<String,Integer>> mapIterator = intMap.entrySet().iterator();
//        while (mapIterator.hasNext()){
//            Map.Entry<String,Integer> itemMap = mapIterator.next();
//            if("two".equals(itemMap.getKey())){
//                mapIterator.remove();
//            }
//        }
        // 使用removeIf的写法
        intMap.entrySet().removeIf(item->"two".equals(item.getKey()));

        // 打印结果
        System.out.println("list result:");
        intList.forEach(System.out::println);

        System.out.println("map result:");
        intMap.forEach((k,v)->System.out.println("key:"+k+",value:"+v));
    }
}

输出结果:
在这里插入图片描述
另外,removeIf方法,其实就是使用了iterator迭代器。源码如下:
在这里插入图片描述
这个方法位于Collection接口当中。接口中可以写入默认方法(default),也是1.8新增的特性之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值