• java基础 集合2


    前9点,在另一篇作品中,可以从集合1开始观看

    9.List遍历方式: 

    10.Arraylist底层原理: 

     11.Linklist底层原理: 

    1.LinkedList做队列和栈: 

    1. package day01;
    2. import java.util.ArrayList;
    3. import java.util.Iterator;
    4. import java.util.LinkedList;
    5. import java.util.List;
    6. public class Test03 {
    7. public static void main(String[] args) {
    8. LinkedList<String> queue = new LinkedList<>();
    9. queue.add("第1个");
    10. queue.add("第2个");
    11. queue.add("第3个");
    12. queue.add("第4个");
    13. System.out.println("输出队列,先进先出");
    14. System.out.println(queue.removeFirst());
    15. System.out.println(queue.removeFirst());
    16. System.out.println(queue.removeFirst());
    17. System.out.println(queue.removeFirst());
    18. System.out.println("-------------------------------");
    19. System.out.println("栈输出,后进后出");
    20. LinkedList<String> stack = new LinkedList<>();
    21. // stack.add("第1个");
    22. // stack.add("第2个");
    23. // stack.add("第3个");
    24. // stack.add("第4个");
    25. // System.out.println(stack.removeLast());
    26. // System.out.println(stack.removeLast());
    27. // System.out.println(stack);
    28. stack.push("第1个");
    29. stack.push("第2个");
    30. System.out.println(stack.pop());
    31. System.out.println(stack);
    32. }
    33. }

    12.set集合: 

    13.HashSet底层原理:

     14.LinkedHashSet底层原理:

     15.TreeSet:

    16. collection总结:

    17.集合的并发修改异常:

    18.可变参数:

    19.Collections工具类:

    21.Map集合:

    1. package day01;
    2. import java.util.HashMap;
    3. import java.util.LinkedHashMap;
    4. import java.util.Map;
    5. import java.util.TreeMap;
    6. public class Mapday1 {
    7. public static void main(String[] args) {
    8. /*
    9. HashMap 无序 不重复,会覆盖前面 无索引
    10. */
    11. Map<String, Integer> map = new HashMap<String, Integer>();
    12. map.put("wwx", 1);
    13. map.put("wwx", 4);
    14. map.put("wwx2", 2);
    15. map.put("wwx3", 3);
    16. System.out.println(map);
    17. /*
    18. LinkedHashMap 有序 不重复,会覆盖前面 无索引
    19. */
    20. LinkedHashMap<String, String> lkMap = new LinkedHashMap<>();
    21. lkMap.put("wwx0", "000");
    22. lkMap.put("wwx1", "111");
    23. lkMap.put("wwx1", "1112");
    24. lkMap.put("wwx2", "222");
    25. System.out.println(lkMap);
    26. /*
    27. TreeMap<> 有序 不重复 无索引
    28. */
    29. TreeMap<String, String> strMap = new TreeMap<>();
    30. strMap.put("wwx0", "000");
    31. strMap.put("wwx1", "111");
    32. strMap.put("wwx1", "1112");
    33. strMap.put("wwx2", "222");
    34. System.out.println(strMap);
    35. }
    36. }

    22Map常用方法: 

    1. package day01;
    2. import java.util.*;
    3. public class Mapday1 {
    4. public static void main(String[] args) {
    5. /*
    6. HashMap 无序 不重复,会覆盖前面 无索引
    7. */
    8. Map<String, Integer> map = new HashMap<>();
    9. map.put("wwx1", 100);
    10. map.put("wwx2", 2);
    11. map.put("wwx3", 3);
    12. System.out.println(map);
    13. //返回集合大小
    14. System.out.println(map.size());
    15. //清空键值对表
    16. //map.clear();
    17. //会判断键值对表 是否为空,为空ture,否则反之
    18. // System.out.println(map.isEmpty());
    19. int v1 = map.get("wwx1");
    20. System.out.println(v1);
    21. //获取全部键集合 Set集合接收 set不可重复,所以不会重复接收
    22. Set<String> strings = map.keySet();
    23. System.out.println(strings);
    24. //获取Map集合全部值 Collection集合接收
    25. Collection<Integer> values = map.values();
    26. System.out.println(values);
    27. /*
    28. putAll()方法
    29. */
    30. System.out.println("-------------------------");
    31. Map<String ,Integer> map1=new HashMap<>();
    32. map1.put("put1",111);
    33. map1.put("put2",222);
    34. System.out.println(map1);
    35. Map<String ,Integer> map2=new HashMap<>();
    36. map2.put("put3",3);
    37. map2.put("put4",4);
    38. map1.putAll(map2);
    39. System.out.println(map2);
    40. System.out.println(map1);
    41. System.out.println(map2);
    42. }
    43. }

    23.Map遍历:

    1.键找值

    1. package day01;
    2. import java.util.*;
    3. public class Mapday1 {
    4. public static void main(String[] args) {
    5. /*
    6. HashMap 无序 不重复,会覆盖前面 无索引
    7. */
    8. System.out.println("--------------------");
    9. Map<String, Integer> map = new HashMap<>();
    10. map.put("wwx1", 1);
    11. map.put("wwx2", 2);
    12. map.put("wwx3", 3);
    13. Set<String> keySets = map.keySet();
    14. System.out.println(keySets);
    15. for (String keySet : keySets) {
    16. Integer integer = map.get(keySet);
    17. System.out.println(keySet + "-->>" + integer);
    18. }
    19. System.out.println("--------------------");
    20. }
    21. }

    2.键值对:

    3.lambda遍历:

    24.Map案例:

    1. package day01;
    2. import java.util.*;
    3. public class Mapday1 {
    4. public static void main(String[] args) {
    5. //80个学生选择的景点数据拿到程序中来
    6. ArrayList<String> data = new ArrayList<>();
    7. //假设ABCD为4个景点
    8. String[] select = {"A", "B", "C", "D"};
    9. Random r = new Random();
    10. for (int i = 0; i < 80; i++) {
    11. //模拟一个学生选择一个景点,存到集合中去
    12. int index = r.nextInt(4);//0123,包左不包右
    13. data.add(select[index]);
    14. }
    15. System.out.println(data);
    16. HashMap<String, Integer> result = new HashMap<>();
    17. //遍历80个景点数据
    18. for (String s : data) {
    19. //问问Map集合中是否存在该景点
    20. if (result.containsKey(s)) {
    21. //说明这个景点之前统计过,其值+1,存入到Map集合中去
    22. result.put(s, result.get(s) + 1);
    23. } else {
    24. //说明这个景点是第一次统计
    25. result.put(s, 1);
    26. }
    27. }
    28. System.out.println(result);
    29. }
    30. }

    25.HashMap集合底层原理:

    26.LinkedHasMap集合的底层原理:

    27.TreeMap集合底层原理:

     

    此时TreeMap,无法识别类型无法排序 

     1.让类实现Comparable接口重写比较规则:

    快捷键alt+insert,选择equals() and hashCode(),一直next

    2.TreeMap集合自带的有参构造器,支持Comparator比较器对象,以便用来指定比较规则:

    28.集合的嵌套:

    1. package day02;
    2. import java.util.*;
    3. public class MapTest {
    4. public static void main(String[] args) {
    5. //创建一个嵌套集合list集合的map集合,值为list集合,
    6. Map<String, List<String>> map = new HashMap<>();
    7. //创建一个ArrayList集合来当作map集合的值
    8. ArrayList<String> cities = new ArrayList<>();
    9. //调用Collections.addAll(list集合,”数据“,”数据“,···)批量添加数据
    10. Collections.addAll(cities, "厦门", "福州", "泉州", "漳州", "龙岩");
    11. //map.put(键,值)方法,给map集合赋值
    12. map.put("福建省", cities);
    13. System.out.println(map);
    14. //map.get(键),该方法可获得该键的值
    15. List<String> fjCities = map.get("福建省");
    16. //增强for遍历
    17. for (String fjCity : fjCities) {
    18. System.out.println(fjCity);
    19. }
    20. System.out.println("-------------------------");
    21. //lambda遍历
    22. map.forEach((p,c)->{
    23. System.out.println(p+"->"+c);
    24. });
    25. }
    26. }

  • 相关阅读:
    Python每日一练 01
    1、SpringCloud大型企业分布式微服务云架构之Markdown 教程
    C++ "链链"不忘@必有回响之双向链表
    linux和windwos下的磁盘扇区数据查看
    Flask 学习-7. make_response() 自定义响应内容
    JavaScriptJQuery_jQuery链式编程
    #边学边记 必修5 高项:对人管理 第1章 项目人力资源管理 延伸阅读:现代激励理论及项目经理所需具备的影响力
    java数组求和
    在 Windows 终端运行已有的 Python 程序
    【超图+CESIUM】【基础API使用示例】49、超图|CESIUM -自定义按钮操作视角上下左右东西南北移动|修改覆盖罗盘的上下左右东西南北的视角移动
  • 原文地址:https://blog.csdn.net/qq_64005599/article/details/134056242