Java容器系列——(一)概览以及容器中使用的设计模式

2019-08-05  本文已影响0人  XHHP

(一)、概览

容器主要分为Collection和Map两种,Collection主要用于存储对象的集合,而Map主要存储着键值对的映射表

-    Collection

在这里插入图片描述

1.Set

2.List

3.Queue

-    Map

在这里插入图片描述

(二)、容器中的设计模式

-    迭代器模式

在这里插入图片描述
Collection<String> str = new ArrayList<>();
        str.add("aa");
        str.add("bb");
        for(String temp: str) {
            System.out.println(temp);
        }

-    适配器模式

  1. 首先来看Arrays.asList()方法,这里直接创建了一个ArrayList
    @SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
  1. 继续深一步看源码,可以看到,他只是简单判断了一下数组是否为null,如果不为null,就直接将array的地址赋值给a
ArrayList(E[] array) {
     a = Objects.requireNonNull(array);
}
  1. 因此如果更改子列表的值,原数组的数值也会发生变化
  2. 但是,后面对原列表的增加或删除,均会导致子列表的增加删除产生 ConcurrentModificationException异常
  public static void main(String[] args) {
        String[] array = {"aa","bb"};
        List<String> str = Arrays.asList(array);
        str.add("cc");      //抛出java.lang.UnsupportedOperationException
        array[0] = "bb";
        System.out.println(str.get(0));     //修改原数组的值也会印象集合中的值
    }
上一篇 下一篇

猜你喜欢

热点阅读