java的Map的子类

-----------------------java的Map的子类-----------------------

 

Map的实现类HashMap

      HashMap的特点

1.    HashMap是map的实现类

2.    允许多个null值和一个null键

3.    HashMap中的元素没有顺序(跟添加的顺序无关)

4.    HashMap不是线程安全的。

 

public  class MapDemo4 {

 

    public  static  void main(String[] args) {

        //定义一个map

        Map<String,String>  map = new HashMap<String,String>();

        //放入键值对

        map.put("鼓上骚", "时迁");

        map.put("行者", "武松");

        map.put("及时雨", "松江");

        map.put("付宝义", "宋江");

        System.out.println(map);

        //输出{付宝义=宋江, 行者=武松, 及时雨=松江, 鼓上骚=时迁}

        //由此看出hashMap添加的顺序是没有规律的,并且它不是线程安全的

       

        //map变成线程同步

        map = Collections.synchronizedMap(map);

       

-----------------------------------------------------------------------------

Map的实现类TreeMap

TreeMap可以参考TreeSet,TreeMap可以支持Map的排序。

 

该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法

TreeMap也不是线程安全的

 

TreeMap的特点:

1.    可以按着key来做排序

2.    Key不能为nullkey不能重复,值可以有多个null

3.    不是线程安全的

 

 

public  class MapDemo5 {

 

    public  static  void main(String[] args) {

        //定义一个TreeMap

        Map<String,Person>  map = new TreeMap<String,Person>();

       

        //TreeMap是根据keycomparator来进行排序的

        map.put("b", new Person(1, "张三", 23));

        map.put("a", new Person(2, "李四", 23));

       

        //TreeMapkey是不能为null

        //map.put(null, new Person(2, "李四", 23));

        System.out.println(map);

        //输出{a=Person [id=2, name=李四, age=23], b=Person [id=1, name=张三, age=23]}

       

        //如果我们想按Person来进行排序就把PersonString的位置调换

        //定义一个TreeMap

        Map<Person,String>  map1 = new TreeMap<Person,String>();

       

        //TreeMap是根据keycomparator来进行排序的

        //注意:我们必须重写Person类的compareTo方法来进行排序

        //Person类必须实现Comparable接口,泛型是Person

        map1.put( new Person(5, "张三", 23),"b");

        map1.put( new Person(2, "王五", 25),"a");

        map1.put( new Person(4, "李四", 21),"h");

        System.out.println(map1);

        //输出{Person [id=2, name=王五, age=25]=a, Person [id=4, name=李四, age=21]=h, Person[id=5, name=张三, age=23]=b}

    }

   

}

 

--------------------------------------------------------------------------------------------------------------

Map的实现类Hashtable

Hashtable的特点

1.    Hashtable是map的实现类

2.    不允许任何null值和null

3.    HashTable中的元素没有顺序(跟添加的顺序无关)

4.    Hashtable是线程安全的

 

HashMap和Hashtable的区别

1.    都是键值对集合

2.    HashMap允许有一个null键和多个null值,HashTable不允许有null键和null

3.    HashMap不是线程安全的,Hashtable是线程安全的

 

public  class MapDemo6 {

 

    public  static  void main(String[] args) {

        //定义一个Hashtable

        Map<String,String>  map = new Hashtable<String,String>();

        //放入键值对

        map.put("鼓上骚", "时迁");

        map.put("行者", "武松");

        map.put("及时雨", "松江");

        map.put("付宝义", "宋江");

        //Hashtable key和值都不能为null

        //map.put(null, "宋江");

        //map.put("付宝义", null);

        System.out.println(map);

        //输出{付宝义=宋江, 行者=武松, 及时雨=松江, 鼓上骚=时迁}

   

    }

   

}

 

------------------------------------------------------

Map的实现类LinkedHashMap

LinkedHashMap的特点

1.    LinkedHashMap是Map的实现类。

2.    允许多个null值和一个null键。

3.    LinkedHashMap有顺序(添加的顺序)

4.    LinkedHashMap不是线程安全的

 

public  class MapDemo7 {

 

    public  static  void main(String[] args) {

        //定义一个LinkedHashMap

        Map<String,String>  map = new LinkedHashMap<String,String>();

        //放入键值对

        map.put("鼓上骚", "时迁");

        map.put("行者", "武松");

        map.put("及时雨", "松江");

        map.put("付宝义", "宋江");

        System.out.println(map);

        //输出{鼓上骚=时迁, 行者=武松, 及时雨=松江, 付宝义=宋江}

   

    }

   

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值