• Java入门 集合框架、泛型和Collection(补充)(第二十三天)


    Map接口

    Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
        1)最常用的实现类是HashMap

    Map接口常用方法

    方法名

    说明

    Object put(Object key, Object val)

    以“键-值”对的方式进行存储

    Object get(Object key)

    根据键返回相关联的值,如果不存在指定的键,返回null

    Object remove(Object key)

    删除由指定的键映射的“键-值对”

    int size()

    返回元素个数

    Set keySet()

    返回键的集合

    Collection values()

    返回值的集合

    boolean containsKey(Object key)

    如果存在由指定的键映射的“键-值对”,返回true

    遍历Map集合 

    方法1:通过迭代器Iterator实现遍历 
    方法2:增强型for循环
    方法3:键值对

    1. package GatherDemo03;
    2. import java.util.Collection;
    3. import java.util.HashMap;
    4. import java.util.Iterator;
    5. import java.util.Map;
    6. import java.util.Set;
    7. public class HashMapDemo01 {
    8. public static void main(String[] args) {
    9. //准备容器:创建HashMap对象
    10. HashMap hm = new HashMap();
    11. //准备元素并将元素存储到集合中
    12. hm.put("CN", "中华人民共和国");
    13. hm.put("JP", "小日本");
    14. hm.put("RU", "俄罗斯联邦");
    15. hm.put("USA", "美利坚合众国");
    16. hm.put("UK", "大不列颠及北爱尔兰联合王国");
    17. System.out.println(hm.size());
    18. //遍历键值对的3种方式
    19. //方式一:获取键的集合,然后在遍历键的集合过程中调用get()方法获取值
    20. Set keys2 = hm.keySet();
    21. for (String key : keys2) {
    22. //根据键获取值
    23. String value=hm.get(key);
    24. System.out.println(key+"---"+value);
    25. }
    26. System.out.println("********************************");
    27. //方式二:获取键的集合,然后在遍历键的集合过程中调用get()方法获取值
    28. Set keys3=hm.keySet();
    29. Iterator it = keys3.iterator();
    30. while (it.hasNext()) {
    31. String key = it.next();
    32. //获得键
    33. String value=hm.get(key);
    34. System.out.println(key+"---"+value);
    35. }
    36. System.out.println("********************************");
    37. //方式三:键值对遍历,将hm集合中的键值对整体取出来后放入到Set集合中
    38. /*
    39. *1)使用entrySet( )方法将hm集合中的键值对整体取出来放在Set集合中
    40. *
    41. *2)然后使用增强for循环或者迭代器取出Set集合中的键值对元素,取出来的
    42. * 是Object类型,实际,上键值对的真正类型是Map. Entry类型
    43. *
    44. *3)所以将取出来的元素强制转换为Map. Entry类型,Map. Entry类中有getKey( )
    45. * 方法获取键值对的键,有getValue( )方法获取键值对的值
    46. */
    47. Set> keyValues=hm.entrySet();
    48. for (Map.Entry me : keyValues) {
    49. //获取键
    50. String key=me.getKey();
    51. //根据键获取值
    52. String value=me.getValue();
    53. System.out.println(key+"---"+value);
    54. }
    55. }
    56. }
    1. package GatherDemo03;
    2. import java.util.Collection;
    3. import java.util.HashMap;
    4. import java.util.Iterator;
    5. import java.util.Map;
    6. import java.util.Set;
    7. public class HashMapDemo01 {
    8. public static void main(String[] args) {
    9. //准备容器:创建HashMap对象
    10. HashMap hm = new HashMap();
    11. //准备元素并将元素存储到集合中
    12. hm.put("CN", "中华人民共和国");
    13. hm.put("JP", "小日本");
    14. hm.put("RU", "俄罗斯联邦");
    15. hm.put("USA", "美利坚合众国");
    16. hm.put("UK", "大不列颠及北爱尔兰联合王国");
    17. System.out.println(hm.size());
    18. //根据键获取对应的值
    19. Object obj1=hm.get("CN");
    20. String str1=(String)obj1;
    21. System.out.println(str1);
    22. System.out.println(hm.get("CNN"));
    23. //删除集合中的元素
    24. String str2=hm.remove("JP");
    25. System.out.println(str2);
    26. System.out.println(hm.size());//删除元素JP,还有4个元素
    27. //获取HashMep集合中所有键值对的键
    28. Set keys=hm.keySet();
    29. for (String key : keys) {
    30. System.out.println(key);
    31. }
    32. //获取HashMep集合中所有键值对的值
    33. Collection values= hm.values();
    34. for (String value : values) {
    35. System.out.println(value);
    36. }
    37. //查询集合中是否存在指定键对应的键值对
    38. System.out.println(hm.containsKey("RU"));//true
    39. System.out.println(hm.containsKey("JP"));//false
    40. }
    41. }
    42. }

     

    泛型

    将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性
    本质是参数化类型

    泛型集合

    泛型集合可以约束集合内的元素类型 

    典型泛型集合ArrayList、HashMap
            1)表示该泛型集合中的元素类型
            2)泛型集合中的数据不再转换为Object

    语法:

    HashMap  集合名= new HashMap();

    Collections算法类

    Java集合框架将针对不同数据结构算法的实现都保存在工具类中

    Collections类定义了一系列用于操作集合的静态方法

    Collections类常用方法

    Collections和Collection不同,前者是集合的操作类,后者是集合接口

    Collections提供的常用静态方法
         1)sort():排序
         2)binarySearch():查找
         3)max()\min():查找最大\最小值

    Collections排序

    Collections类可以对集合进行排序、查找和替换操作

    实现一个类的对象之间比较大小,该类要实现Comparable接口
          重写compareTo()方法

    1. package GatherDemo04;
    2. import java.util.ArrayList;
    3. import java.util.Collections;
    4. public class CollectionsDemo01 {
    5. public static void main(String[] args) {
    6. ArrayList al = new ArrayList();
    7. al.add("qwe");
    8. al.add("abc");
    9. al.add("rds");
    10. al.add("asd");
    11. al.add("kjh");
    12. al.add("dgt");
    13. //遍历集合
    14. for (String string : al) {
    15. System.out.println(string);
    16. }
    17. System.out.println("排序后");
    18. //集合元素升序排序
    19. Collections.sort(al);
    20. for (String string : al) {
    21. System.out.println(string);
    22. }
    23. //查找元素,注意。查找元素之前集合要进行升序排序,否则,不能保证查找结果的正确性
    24. int index =Collections.binarySearch(al, "abc");
    25. System.out.println(index);//0
    26. int index2 =Collections.binarySearch(al, "dsajfhjsadfh");//查找不存在的元素返回负值
    27. System.out.println(index2);
    28. System.out.println(Collections.max(al));
    29. System.out.println(Collections.min(al));
    30. }
    31. }
    1. package GatherDemo04;
    2. import java.util.ArrayList;
    3. import java.util.Collections;
    4. public class CollectionsDemo02 {
    5. public static void main(String[] args) {
    6. // 准备容器:创建集合对象
    7. ArrayList al = new ArrayList();
    8. // 准备数据:创建Student对象
    9. Student stu1 = new Student("张三", 22);
    10. Student stu2 = new Student("李四", 21);
    11. Student stu3 = new Student("王五", 25);
    12. Student stu4 = new Student("赵六", 20);
    13. Student stu5 = new Student("孙七", 26);
    14. // 将对象存储到集合中
    15. al.add(stu1);
    16. al.add(stu2);
    17. al.add(stu3);
    18. al.add(stu4);
    19. al.add(stu5);
    20. // 遍历集合
    21. for (Student student : al) {
    22. System.out.println(student);
    23. }
    24. // 对集合进行排序
    25. Collections.sort(al);
    26. // 遍历集合
    27. System.out.println("排序后:");
    28. for (Student student : al) {
    29. System.out.println(student);
    30. }
    31. // 输出byte类型的最大值和最小值
    32. System.out.println(Byte.MIN_VALUE);
    33. System.out.println(Byte.MAX_VALUE);
    34. System.out.println(Short.MIN_VALUE);
    35. System.out.println(Short.MAX_VALUE);
    36. }
    37. }

  • 相关阅读:
    基于web的学校二手书城系统/二手书交易系统
    【推送服务】【FAQ】Push Ki常见咨询合集5--消息回执类问题
    不可错过的10本架构师必读书籍,带你嗨翻架构师之路,三连评论送书!
    Redis存储结构之zskiplist
    20241028软考架构-------软考案例7答案
    踩中AIGC 美图看清自己“工具”本职
    Java多线程之线程池
    【数据结构与算法】JavaScript实现双向链表
    高通平台Android 蓝牙调试和配置手册-- HCI Transport Failures: Command Timeout
    基础SQL DML-插入语句
  • 原文地址:https://blog.csdn.net/m0_70516782/article/details/126373868