java中的Map接口

水深无声 2022-04-06 09:40 548阅读 0赞

java中的Map接口

实现Map接口的类用来存储——键值对

Map接口的实现类有HashMap和TreeMap等

键值不能重复(键相当与索引)

TestMap.java

  1. import java.util.*;
  2. //Map方法举例
  3. public class TestMap {
  4. public static void main(String[] args) {
  5. Map m1 = new HashMap();
  6. //put("K","V"),键——值
  7. m1.put("one",new Integer(1));
  8. m1.put("two",new Integer(2));
  9. m1.put("three",new Integer(3));
  10. Map m2 = new TreeMap();
  11. m2.put("A",new Integer(1));
  12. m2.put("B",new Integer(2));
  13. //size()大小
  14. System.out.println(m1.size());//3
  15. //containsKey,包含Key
  16. System.out.println(m1.containsKey("one"));//true
  17. //containsValue,包含Value
  18. System.out.println(m2.containsValue(new Integer(1)));//true
  19. if(m1.containsKey("two")){
  20. //get(),通过K找到对象,对象在调用intValue(),得到int值
  21. int i = ((Integer)m1.get("two")).intValue();
  22. System.out.println(i);//2
  23. }
  24. //将m1 copy到 m3,再将m2放入m3
  25. Map m3 = new HashMap(m1);
  26. m3.putAll(m2);
  27. System.out.println(m3);//{A=1, B=2, two=2, three=3, one=1},没有顺序
  28. }
  29. }
  30. F:\java>javac TestMap.java
  31. 注: TestMap.java使用了未经检查或不安全的操作。
  32. 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
  33. F:\java>java TestMap
  34. 3
  35. true
  36. true
  37. 2
  38. {A=1, B=2, two=2, three=3, one=1}
  39. F:\java>

Auto-boxing/unboxing

自动打包/解包

TestM.java

  1. import java.util.*;
  2. public class TestM {
  3. public static void main(String args[]) {
  4. //自动打包/解包
  5. Map m1 = new HashMap();
  6. Map m2 = new TreeMap();
  7. //m1.put("one",new Integer(1));
  8. //put("one", 1)中的“1”不是int型的值,而是自动打包为“对象”
  9. m1.put("one", 1);
  10. //m1.put("two",new Integer(2));
  11. m1.put("two", 2);
  12. //m1.put("three",new Integer(3));
  13. m1.put("three", 3);
  14. //m2.put("A",new Integer(1));
  15. m2.put("A", 1);
  16. //m2.put("B",new Integer(2));
  17. m2.put("B", 2);
  18. System.out.println(m1.size());
  19. System.out.println(m1.containsKey("one"));
  20. System.out.println
  21. //(m2.containsValue(new Integer(1)));
  22. (m2.containsValue(1));
  23. if(m1.containsKey("two")) {
  24. //int i = ((Integer)m1.get("two")).intValue();
  25. //自动解包,(Integer)m1.get("two")
  26. int i = (Integer)m1.get("two");
  27. System.out.println(i);
  28. }
  29. Map m3 = new HashMap(m1);
  30. m3.putAll(m2);
  31. System.out.println(m3);
  32. }
  33. }
  34. F:\java>javac TestM.java
  35. 注: TestM.java使用了未经检查或不安全的操作。
  36. 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
  37. F:\java>java TestM
  38. 3
  39. true
  40. true
  41. 2
  42. {A=1, B=2, two=2, three=3, one=1}
  43. F:\java>

计算args数组中元素重复的个数

TestArgsWords.java

  1. import java.util.*;
  2. /*
  3. 计算args数组中元素重复的个数
  4. */
  5. public class TestArgsWords {
  6. private static final Integer ONE = new Integer(1);
  7. public static void main(String args[]) {
  8. Map m = new HashMap();
  9. for (int i = 0; i < args.length; i++) {
  10. //拿到args的值,不存在时freq = null
  11. Integer freq = (Integer) m.get(args[i]);
  12. //将args的值放入map中,(K,V)
  13. m.put(args[i],(freq == null? ONE : new Integer(freq.intValue() + 1)));
  14. }
  15. //打印m的大小
  16. System.out.println(m.size() + " distinct words detected:");
  17. //打印m的内容
  18. System.out.println(m);
  19. }
  20. }
  21. F:\java>javac TestArgsWords.java
  22. 注: TestArgsWords.java使用了未经检查或不安全的操作。
  23. 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
  24. F:\java>java TestArgsWords
  25. 0 distinct words detected:
  26. {}
  27. F:\java>java TestArgsWords aa aab aa aa sss aa db aa
  28. 4 distinct words detected:
  29. {aa=5, sss=1, aab=1, db=1}
  30. F:\java>

用自动打包解包,改写上面的方法

TestArgsWords.java

  1. import java.util.*;
  2. /*
  3. 计算args数组中元素重复的个数
  4. 改写为自动打包解包的形式
  5. */
  6. public class TestArgsWords {
  7. //private static final Integer ONE = new Integer(1);
  8. private static final int ONE = 1;
  9. public static void main(String args[]) {
  10. Map m = new HashMap();
  11. for (int i = 0; i < args.length; i++) {
  12. //拿到args的值,不存在时freq = null
  13. //Integer freq = (Integer) m.get(args[i]);
  14. //如果m.get()中的值为空,赋值为0
  15. int freq = (Integer) m.get(args[i]) == null ? 0 : (Integer) m.get(args[i]);
  16. //将args的值放入map中,(K,V)
  17. //m.put(args[i],(freq == null? ONE : new Integer(freq.intValue() + 1)));
  18. m.put(args[i], freq==0 ? ONE : freq + 1);
  19. }
  20. //打印m的大小
  21. System.out.println(m.size() + " distinct words detected:");
  22. //打印m的内容
  23. System.out.println(m);
  24. }
  25. }
  26. F:\java>javac TestArgsWords.java
  27. 注: TestArgsWords.java使用了未经检查或不安全的操作。
  28. 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
  29. F:\java>java TestArgsWords aa aab aa aa sss aa db aa
  30. 4 distinct words detected:
  31. {aa=5, sss=1, aab=1, db=1}
  32. F:\java>

发表评论

表情:
评论列表 (有 0 条评论,548人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java map接口

    Map接口概述 1. 实现Map接口的集合类用来存储“键-值”映射对。key-value 2. Map实现类中存储的“键-值”映射对是通过键来唯一标识,Map底层的“键

    相关 javaMap接口

    java中的Map接口 实现Map接口的类用来存储——键值对 Map接口的实现类有HashMap和TreeMap等 键值不能重复(键相当与索引)  TestMap.