码迷,mamicode.com
首页 > 其他好文 > 详细

Map类

时间:2018-07-26 23:41:37      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:etag   pareto   else   link   compareto   void   diff   object   imp   

package map;

public class differentDemo {
    /**
     * map和Collection集合的区别
     * map集合是键值对的集合    Collection是单一出现数据的聚合
     * Map的键是唯一的,而collection的子接口List集合中的元素是可以重复的,set是唯一的
     * map是夫妻对,collection是光棍
     */
}
package map;

import java.util.HashMap;
import java.util.Map;

public class MapDemo1 {
    public static void main(String[] args) {
        
        /**
         * Map的特点:
         * 数据成对出现
         * 数据的键是唯一的
         * 一个键只能对应一个值
         * 值可以重复
         * 键允许一个为空,值可以多个是空
         * 方法:
         * put()
         * putAll()
         * remove()
         * clear()
         * 
         * get()
         *  Set<k>   keySet
         *  
         *  判断功能:
         *  containsKey()
         *  containsValue()
         *  isEmpty()
         *  
         *  
         *  遍历方式:
         *  Set<Entry<String,Person>> entry = map.entrySet();
         *  for(Entry<String,Person> sp:entry){
         *      String key = sp.getKey();
         *      Person value = sp.getValue();
         *  System.out.println("键:"+key+"   值:"+value);
         *  
         *  }
         *  HashMap:
         *  
         *  HashMap是map的实现类
         *   允许多个null值和null键
         *   Hashmap中的元素没有顺序
         *   hashmap不是线程安全的
         *   Map<String,String> map = new HashMap<String,String>();
         *   map = Collections.synchronizedMap(map);
         *   这样就变成了线程安全的
         *   
         *   Treemap:
         *   可以进行自然排序
         *   可以创建comparetor进行排序,可以重写compareto进行排序
         *   
         *   key不能为null,不能重复
         *   
         *   
         *   HashTable:
         *   不允许有任何null值和null键
         *   
         *   HashTable中的元素没有顺序
         *   是线程安全的
         *   
         *   LinkedHashMap:
         *   
         *   有顺序,
         *   允许多个null值和null键
         *   不是线程安全的
         *   
         *  
         *  
         */
        Map<String,String> map = new HashMap<String,String>();
        map.put("鼓上蚤","时迁");
        map.put("行者","武松");
        //键是唯一的,如果有俩会存在覆盖的情况
        map.put("行者","武大郎");
        
        
    }
}
package practice;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Demo1 {
    public static void main(String[] args) {
        /**
         * map的特点: 1.数据成对出现 2.数据的键是唯一的,如果有相同的会被覆盖的 3.一个键只能有一个值 4.值可以重复
         * 5.键允许有一个为空,值可以多个是空,有一个null可以对应,有两个null就无法正确对应了
         */
        Map<String, String> map = new HashMap<String, String>();
        map.put("鼓上蚤", "时迁");
        map.put("行者", "武松");
        map.put("及时雨", "宋江");
        map.put("呼保义", "宋江");
        map.put(null, "无用");
        map.put("晓晓", null);
        map.put("螃蟹", null);
        // 只能有一个null键,否则,会被覆盖
//        map.put(null, "无1用");
        System.out.println(map);

        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("花和尚", "鲁智深");
        map1.put("青面兽", "杨志");
        // 一个map添加到另一个map中
        map.putAll(map1);
        System.out.println(map);
//        清空map
        map1.clear();
        System.out.println(map1);
        // 删除一个键值对
        map.remove("青面兽");
        // 通过对应的键来获取值
        System.out.println(map);
        // 通过get来获取键值对  如果没有相应的键就返回null
        String a = map.get("花和尚");
        System.out.println(a);
            
        Set<String> set = map.keySet();
        //这里输出的是所有的键
        System.out.println(set);
        for(String key:set) {
            //根据当前的key来获得value
            String value  = map.get(key);
            System.out.println(value);
        }
        
        Map<String,Person> map2 = new HashMap<String,Person>();
        
        map2.put("3", new Person(1,"阿彪",1));
        map2.put("2", new Person(1,"拖拉机",2));
        System.out.println(map2);
        //是否包含某个值
        boolean iscon = map.containsKey("花和尚");
        System.out.println(iscon);
        boolean isval = map.containsValue("鲁智深");
        System.out.println(isval);
        
        boolean isval1 = map2.containsValue(new Person(1,"阿彪",1));
        System.out.println(isval1);
        
        Set<Entry<String, String>> entry  = map.entrySet();
        for(Entry<String, String> et : entry)
        {        //for循环中自己定义的那个就是元素
            String key1 = et.getKey();
            String value1 = et.getValue();
            System.out.println("键:  "+key1+"     值:"+value1);
        }
        
    }
}
package practice;

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
        
    
    public static void main(String[] args) {
        /**
         * map的实现类HashMap
         * 1.允许多个null值和一个null键
         * 2.HashMap中的元素没有顺序(跟添加的顺序无关)
         * 3.HashMap不是线程安全的
         */
        Map<String,String> map = new HashMap<String,String>();
        map.put("鼓上蚤", "时迁");
        map.put("呼保义", "宋江");
        map.put("及时雨", "宋江");
        map.put("行者", "武松");
        System.out.println(map);
        
    }
}
package practice;

public class HashtableDemo {
/**
 * 不允许有null值和null键
 */
}
package practice;

public class HashtableDemo {
/**
 * 不允许有null值和null键
 */
}
package practice;

public class Person {
    private int age;
    
    private String name;
    
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person [age=" + age + ", name=" + name + ", gender=" + gender + "]";
    }

    public Person(int age, String name, int gender) {
        super();
        this.age = age;
        this.name = name;
        this.gender = gender;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + gender;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof Person)) {
            return false;
        }
        Person p = (Person)obj;
        if(this.age == p.age&&this.gender==p.gender
                &&this.name!=null&&p.name!=null&this.name.equals(p.name)) {
            return true;
        }
        else {
            return false;
        }
        
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getGender() {
        return gender;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

    private int gender;
}
package practice;

public class TreeMap {
/**
 * 有自然排序
 */
}

 

Map类

标签:etag   pareto   else   link   compareto   void   diff   object   imp   

原文地址:https://www.cnblogs.com/java-jiangtao-home/p/9374827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!