=====泛型=====

一、泛型受限

1、类型通配符上限:类/接口<?extends 实参类型>

要求该泛型的类型只能是实参类型,或者实参类型的子类类型

 

2、类型通配符下限:类/接口<?super 实参类型>

要求该泛型的类型只能是实参类型,或者实参类型的父类类型

 

二、泛型擦除

 

 

 

 

 

三、泛型数组

public class TestCollection {
    @Test
    public void testCollectFor(){
        Fruit<String> fruits=new Fruit<>(String.class,5);
        fruits.put(0,"苹果");
        fruits.put(1,"西瓜");
        System.out.println(Arrays.toString(fruits.getArry()));
    }

    class  Fruit<T>{
        T[] arry;
        Fruit(Class<T> clz,int lenth){
            //泛型数组的创建
            arry= (T[])Array.newInstance(clz,lenth);
        }
        public void put(int index,T item){
            arry[index]=item;
        }
        public T[] getArry(){
            return arry;
        }
    }
}

 

=====集合=====

 

 

 

二、Iterator()、Iterator、Iterable关系

=====COW容器:CopyOnWrite=====

原理

1、对容器进行一个复制操作,复制出一个新的容器

2、将旧容器的值全部拷贝到新容器

3、新容器长度加1操作

4、add的新元素添加到数组的最后位置

5、将旧容器的地址指向新容器

注意:COW容器不能保证实时性,只能保证最终一致性,即无法立即读取到添加的元素。适合读多写少

主要两个类:

CopyOnWriteArrayList:可重复数据

CopyOnWriteArraySet:不可重复数据

=====jdk8新特性:Stream=====

Stream收集结果转为各个集合

    @Test
    public void streamTest(){
        //转为List
        List<Integer> list = Stream.of(1, 2, 3, 4, 5)
                .collect(Collectors.toList());
        System.out.println(list);

        //转为Set
        Set<Integer> set = Stream.of(1, 2, 3, 4, 5)
                .collect(Collectors.toSet());
        System.out.println(list);

        //转为具体的ArrayList
        ArrayList<Integer> arrayList = Stream.of(1, 2, 3, 4, 5)
                .collect(Collectors.toCollection(ArrayList::new));
        System.out.println(arrayList);

        //转为具体的HashSet
        HashSet<Integer> hashSet = Stream.of(1, 2, 3, 4, 5)
                .collect(Collectors.toCollection(HashSet::new));
        System.out.println(hashSet);

        //转为Array
        Object[] array = Stream.of(1, 2, 2, 3, 3, 5).toArray();
        System.out.println(Arrays.toString(array));

        Integer[] strings = Stream.of(1, 2, 2, 3, 3, 5).toArray(Integer[]::new);
        System.out.println(Arrays.toString(strings));
    }

 

=====JVM学习=====

 

 

 

堆空间分布情况

 

posted on 2022-11-24 17:52  花开花落-2014  阅读(14)  评论(0编辑  收藏  举报