国产精品chinese,色综合天天综合精品网国产在线,成午夜免费视频在线观看,清纯女学生被强行糟蹋小说

    <td id="ojr13"><tr id="ojr13"><label id="ojr13"></label></tr></td>
        • <source id="ojr13"></source>
            <td id="ojr13"><ins id="ojr13"><label id="ojr13"></label></ins></td>

            Article / 文章中心

            Map

            發(fā)布時間:2021-11-18 點擊數(shù):640

            Map:一次添加一對元素。Collection 一次添加一個元素。


                    Map也稱為雙列集合,Collection集合稱為單列集合。


                    其實map集合中存儲的就是鍵值對。


                    map集合中必須保證鍵的唯一性


            常用方法:


            1,添加。


                    value put(key,value):返回前一個和key關聯(lián)的值,如果沒有返回null.


            2,刪除。


                    void  clear():清空map集合。


                    value remove(key):根據(jù)指定的key翻出這個鍵值對。


            3,判斷。


                    boolean containsKey(key):


                    boolean containsValue(value):


                    boolean isEmpty();


            4,獲取。


                    value get(key):通過鍵獲取值,如果沒有該鍵返回null。


                                                       當然可以通過返回null,來判斷是否包含指定鍵。


                    int size(): 獲取鍵值對的個數(shù)。


            例:


                    public static void main(String[] args) {

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


            method(map);


                             method_2(map);


                    }


                    public static void method_2(Map<Integer,String> map){

                         


                             map.put(8,"zhaoliu");


                             map.put(2,"zhaoliu");


                             map.put(7,"xiaoqiang");


                             map.put(6,"wangcai");


                             Collection<String> values = map.values();


                             Iterator<String> it2 = values.iterator();


                             while(it2.hasNext()){

                                     System.out.println(it2.next());


                             }


                             /*


                              * 第一種遍歷Map集合


                              * 通過Map轉(zhuǎn)成set就可以迭代。


                              * 找到了另一個方法。entrySet。


                              * 該方法將鍵和值的映射關系作為對象存儲到了Set集合中,而這個映射關系的類型就是Map.Entry類型(結婚證)


                              */


                             Set<Map.Entry<Integer, String>> entrySet = map.entrySet();


                             Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();


                             while(it.hasNext()){

                                     Map.Entry<Integer, String> me = it.next();


                                     Integer key = me.getKey();


                                     String value = me.getValue();


                                     System.out.println(key+"::::"+value);


                             }


                             //第二種遍歷Map集合的方法


                             //取出map中的所有元素。


                             //原理,通過keySet方法獲取map中所有的鍵所在的Set集合,在通過Set的迭代器獲取到每一個鍵,


                             //在對每一個鍵通過map集合的get方法獲取其對應的值即可。


                             Set<Integer> keySet = map.keySet();


                             Iterator<Integer> it = keySet.iterator();


                             while(it.hasNext()){

                                     Integer key = it.next();


                                     String value = map.get(key);


                                     System.out.println(key+":"+value);


                             }


                    }


            public static void method(Map<Integer,String> map){//學號和姓名


                             // 添加元素。


                             System.out.println(map.put(8, "wangcai"));//null


                             System.out.println(map.put(8, "xiaoqiang"));//wangcai 存相同鍵,值會覆蓋。


                             map.put(2,"zhangsan");


                             map.put(7,"zhaoliu");


                             //刪除。


                             System.out.println("remove:"+map.remove(2));


                             //判斷。


                             System.out.println("containskey:"+map.containsKey(7));


                             //獲取。


                             System.out.println("get:"+map.get(6));


                             System.out.println(map);


                             Outer.Inner.show();


                    }


            Map常用的子類:


                    |--Hashtable :內(nèi)部結構是哈希表,是同步的。不允許null作為鍵,null作為值。


                             |--Properties:用來存儲鍵值對型的配置文件的信息,可以和IO技術相結合。


                    |--HashMap : 內(nèi)部結構是哈希表,不是同步的。允許null作為鍵,null作為值。


                    |--TreeMap : 內(nèi)部結構是二叉樹,不是同步的。可以對Map集合中的鍵進行排序。


            例1、:HashMap應用舉例:


            public  class Person {

                    public int hashCode() {

                             final int prime = 31;


                             int result = 1;


                             result = prime * result + age;


                             result = prime * result + ((name == null) ? 0 : name.hashCode());


                             return result;


                    }



            注:舉例中的Person對象有存在重復的,但是Person如果沒有實現(xiàn)hashCode()和equals(Object obj)這兩個方法,就無法比較出對象的hash值相等,所以會在結果中看到兩個相同的結果,如果實現(xiàn)這兩個方法就可以比較對象是否相等,如果相等則覆蓋原來的對象的值。實現(xiàn)這兩個對象的方法:Source->Generate hashCode() and equals() 然后在選擇要比較的屬性


                    public boolean equals(Object obj) {


                             if (this == obj)


                                     return true;


                             if (obj == null)


                                     return false;


                             if (getClass() != obj.getClass())


                                     return false;


                             Person other = (Person) obj;


                             if (age != other.age)


                                     return false;


                             if (name == null) {

                                     if (other.name != null)


                                              return false;


                             } else if (!name.equals(other.name))


                                     return false;


                             return true;


                    }


                    private String name;


                    private int age;


                    public Person() {

                             super();


                         


                    }


                    public  String  getName() {

                             return name;


                    }


                    public int getAge() {

                             return age;


                    }


                    public Person(String name, int age) {

                             super();


                             this.name = name;


                             this.age = age;


                    }


            }



            import java.util.HashMap;


            import java.util.Iterator;



            public class ThreadDemo {

                    public static void main(String[] args) {

                             HashMap<Person, String> hMap = new HashMap<Person, String>();


                             hMap.put(new Person("lisi", 23), "北京");


                             hMap.put(new Person("zhaolliu", 45), "上海");


                             hMap.put(new Person("xiaoqiang", 56), "北京");


                             hMap.put(new Person("wangcai", 21), "大連");


                             hMap.put(new Person("lisi", 23), "北京");


                             Iterator<Person> it = hMap.keySet().iterator();


                             while (it.hasNext()) {

                                     Person key = it.next();


                                     String value = hMap.get(key);


                                     System.out.println(key.getName() + ":" + key.getAge() + "---"


                                                       + value);


                             }


                    }


            }


            例2、TreeMap使用。


            package aaa;


            public  class Person {


                    private String name;


                    private int age;


                    public Person() {


                             super();


                    }


                    public  String  getName() {


                             return name;


                    }


                    public int getAge() {


                             return age;


                    }


                    public Person(String name, int age) {


                             super();


                             this.name = name;


                             this.age = age;


                    }


            }


            package aaa;


            public class Student extends Person {


                    public Student() {


                             super();


                    }


                    public Student(String name, int age) {


                             super(name, age);


                    }


            }


            package aaa;


            import java.util.TreeMap;


            import java.util.Iterator;


            public class ThreadDemo {


                    public static void main(String[] args) {


                             TreeMap<Student, String> hMap = new TreeMap<Student, String>(new ComparetorByName());


                             hMap.put(new Student("lisi", 23), "北京");


                             hMap.put(new Student("zhaolliu", 45), "上海");


                             hMap.put(new Student("xiaoqiang", 56), "北京");


                             hMap.put(new Student("wangcai", 21), "大連");


                             hMap.put(new Student("lisi", 23), "東京");


                             Iterator<Student> it = hMap.keySet().iterator();


                             while (it.hasNext()) {


                                     Person key = it.next();


                                     String value = hMap.get(key);


                                     System.out.println(key.getName() + ":" + key.getAge() + "---"


                                                       + value);



            輸出結果:


            lisi:23---東京


            wangcai:21---大連


            xiaoqiang:56---北京


            zhaolliu:45---上海



                             }



                    }


            }






            例3、LinkedHashMap使用舉例


            import java.util.Iterator;


            import java.util.LinkedHashMap;


            import java.util.Map;


            import java.util.Set;


            public class ThreadDemo {



                    public static void main(String[] args) {


                    LinkedHashMap<Integer, String> linkedHashMap=new LinkedHashMap<>();


                    linkedHashMap.put(2, "sd");


                    linkedHashMap.put(3, "qwdsa");


                    linkedHashMap.put(1, "dfsd");


                    linkedHashMap.put(9, "sewq");


                    Iterator<Map.Entry<Integer, String>> iterator=linkedHashMap.entrySet().iterator();


                    while (iterator.hasNext()) {


                             Map.Entry<Integer, String> mEntry=iterator.next();


                             Integer keyInteger=mEntry.getKey();


                             String valueString=mEntry.getValue();


                                              System.out.println(keyInteger+":"+valueString);



            輸出結果:


            2:sd


            3:qwdsa


            1:dfsd


            9:sewq


            結果是有序的


                    }



                    }


            }







            練習:"fdgavcbsacdfs" 獲取該字符串中,每一個字母出現(xiàn)的次數(shù)。


            package aaa;


            import java.util.Iterator;


            import java.util.Map;


            import java.util.TreeMap;


            /*


            * 練習:


            * "fdgavcbsacdfs" 獲取該字符串中,每一個字母出現(xiàn)的次數(shù)。


            * 要求打印結果是:a(2)b(1)...;


            * 思路:


            * 對于結果的分析發(fā)現(xiàn),字母和次數(shù)之間存在著映射的關系。而且這種關系很多。


            * 很多就需要存儲,能存儲映射關系的容器有數(shù)組和Map集合。


            * 關系一方式有序編號嗎?沒有!


            * 那就是使用Map集合。 又發(fā)現(xiàn)可以保證唯一性的一方具備著順序如 a b c ...


            * 所以可以使用TreeMap集合。


            * 這個集合最終應該存儲的是字母和次數(shù)的對應關系。


            * 1,因為操作的是字符串中的字母,所以先將字符串變成字符數(shù)組。


            * 2,遍歷字符數(shù)組,用每一個字母作為鍵去查Map集合這個表。


            * 如果該字母鍵不存在,就將該字母作為鍵 1作為值存儲到map集合中。


            * 如果該字母鍵存在,就將該字母鍵對應值取出并+1,在將該字母和+1后的值存儲到map集合中,


            * 鍵相同值會覆蓋。這樣就記錄住了該字母的次數(shù).


            * 3,遍歷結束,map集合就記錄所有字母的出現(xiàn)的次數(shù)。oy.


            */


            public class ThreadDemo {


                    /**


                     * @param args


                     */


                    public static void main(String[] args) {


                             String str = "fdg+avAdc  bs5dDa9c-dfs";


                             String s = getCharCount(str);


                             System.out.println(s);


                    }


                    public static String getCharCount(String str) {


                             //將字符串變成字符數(shù)組


                             char[] chs = str.toCharArray();


                             //定義map集合表。


                             Map<Character,Integer> map = new TreeMap<Character,Integer>();


                             for (int i = 0; i < chs.length; i++) {


                                     if(!(chs[i]>='a' && chs[i]<='z' || chs[i]>='A' && chs[i]<='Z'))


                                              continue;


                                     //將數(shù)組中的字母作為鍵去查map表。                      


                                     Integer value = map.get(chs[i]);


                                     map.put(chs[i], value==null?1:value+1);                        


                             }


                             return mapToString(map);


                    }


                    private static String mapToString(Map<Character, Integer> map) {


                             StringBuilder sb = new StringBuilder();


                             Iterator<Character> it = map.keySet().iterator();


                             while(it.hasNext()){


                                     Character key = it.next();


                                     Integer value = map.get(key);


                                     sb.append(key+"("+value+")");


                             }


                             return sb.toString();


                    }


            }