JAVA入门小小白学习中ing(Map.Entry、LinkedHashMap、泛型限定)

小猪学习

小小白慢慢学习中ing 第二十七天

努力努力


本日内容(Map.Entry、LinkedHashMap、泛型限定)


1、Map.Entry

    Entry可以认为是一个键值对对象。理解为:将键值对看成一个整体的对象。

    包含了Key,Value。

Map中操作的是一对对象。key和value。存在一个映射关系。对应的。

    key-->value

看成一个整体:Entry

    组合就是一个整体:

            得到了Entry对象

            getKey()-->Key

            getValue()-->Value

对于map集合,无法直接迭代获取里面的元素。

        /*获取map中的每一个元素:迭代map集合?

        * 1.map中的所有的key,存储到一个Set中

        * A:keySet()--->Set集合

        * B:iterator()-->迭代获取每一个key

        * C:根据key获取map中对应的value

        *

        * 2.map中的键值对组合entry,存储到一个Set中

        * A:entrySet()--->Set集合

        * B:iterator()-->迭代获取每一个entry

        * C:根据entry对象,获取里面的key和value

        *

        * for-each

        *

        * 注意点:

        * iterator()--->Collection接口

        * List,Set。。。ArrayList,linkedList,HashSet,TreeSet....

        *

        * map是没有迭代器

        */

2、LinkedHashMap

        记录了存储的顺序。去重的原理和HashMap相同。

3、HashTable【了解】

        哈希表:HashTable旧的类。

        笔试题:问HashMap和HashTable的区别?

                HashMap和HashTable都是Map的实现类

        父类不一样:继承结构不同。

                HashTable的父类是:Dictionary

                HashMap的父类是:AbstractMap

                HashMap是HashTable的替代品。HashTable是旧的类,线程安全,效率低。

                对于null的处理

                HashMap对null,看成了普通的对象。可以key为null,也可以value为null

                HashTable对null没有进行处理。抛出异常:NullPointerException

4、Properties【了解】

        1、Properties类从结构来看,是HashTable的子类,也是集合中的一员。也是用于存储数据的,都是                一些配        置信息。泛型,String类型。

            其他的集合存储对象的,Properties存储属性信息。

        2、超纲:

                将属性集合Properties中的数据——>file文件中

                file文件中——>属性集合Properties中

5、泛型限定【会】

        泛型:JDK1.5之后出现的。

                List list = new ArrayList();

                list.add(Object);//存储Object类型

                JDK1.5之前存入集合中的数据,失去自己原有的数据类型,-->Object类型。当从容器中获取数据,向下转型。

        引入了泛型:

                List

                       element,元素

                Map

                       key,value,键值对

                    T:type,类型

                    A,B,C,M

    1、泛型应用在集合上。

                声明集合的时候,使用<>来限制集合能够操作的数据类型,从而保护类型安全。

                List list = new ArrayList();

                list.add(String);//存储String类型

    2、泛型应用在类上。

                声明一个类的时候使用<>,限制数据类型,泛型作用在类上。普通方法和普通的属性。属于对象的,可以直接使用该泛型。但是不能给静态用。因为作用在类上的泛型,当对象被创建的时候确定的。

class 类名{

        //T这个类型,当创建对象的时候决定好。

}

泛型擦除:如果创建对象的时候,没有指明泛型,那么该类型T——>Object类型。

    3、泛型作用在静态方法上

                方法的声明上使用泛型的声明<>。

                类的静态方法如果使用泛型,需要单独进行泛型的声明,声明泛型要写在static 关键字之后,返回值类型之前。

                //3.,静态方法上自己独立声明泛型,不能使用类的。

                        public static M test(M m){

                        System.out.println(m);

                        return m;

                }

        4、泛型的限定:集合中

                    ?:代表了任意集合中可以存储任意类型,区分于Object

                    List,List

                    List指代可以存储任意泛型类型的集合

                    List集合中的对象,就是Object类型,其他类型的对象会自动转为Object类型。

                    ?extends T:限定了上限

                    接收集合的泛型:中可以存储T,以及T的子类类型。

                    ?super T:限定了下限

                    接收集合的泛型:可以是T,以及T的父类。

        5、不允许使用泛型的地方

                    静态属性:private static T member;//错误的

                    创建T的实例:T t = new T();//错误

                    自定义异常,不能使用泛型

                    class MyException extends Exception

6、Collections工具类

Collection和Collections的区别?

Collection:集合中最大的父接口,List和Set的父接口,规定了集合最基本的操作。

Collections:集合的工具类,包含了集合的常用方法。

Arrays:数组的工具类,包含了数组的常用方法。

1、返回线程安全的集合

        static List synchronizedList(List list)  

        static Set synchronizedSet(Set s)  

        static Collection synchronizedCollection(Collection c)  

        。。。

2、可以向Collection容器中,同时添加多个元素

        Collections.addAll(容器,要添加的元素);

3、List排序

        Collections.sort(list);

        Collections.sort(list,Comparator)

4、。。。



希望我能坚持住每天坚持记录着 ...

你可能感兴趣的:(JAVA入门小小白学习中ing(Map.Entry、LinkedHashMap、泛型限定))