Java笔记(3)

简介: 该文介绍了数据结构的基础知识,包括集合类型和遍历方式。集合分为ArrayList(有序、可重复、有索引)和Set(无序、不重复、无索引)。遍历集合可使用Iterator、增强for循环和Lambda表达式。HashMap是Map接口的实现,用于存储键值对,提供添加、删除、查找等操作。LinkedHashMap保持插入顺序。文章还提及了二叉树的概念,如平衡二叉树和红黑树,并列举了一些常用的Java开发快捷键,以及如何添加依赖。

数据结构

集合(Collection)

image-20240514190113288.png

list系列集合:

添加的元素是有序(录入)、可重复、有索引

ArrayList<String> list = new ArrayList<>();

set系列集合:

添加的元素是无序,不重复,无索引的

.add()
.contains(“STRING”)
.size()

列表迭代器遍历

ListIterator<String> iterator = list.listIterator();
        while (iterator.hasNext()){
   
   
            String s = iterator.next();
            if(s.equals("b")){
   
   
                iterator.remove();//iterator.add("qqq");
            }
            System.out.println(s);
        }

集合遍历

  1. Iteratoriterator

     Iterator<String> iterator = collection.iterator();
             while (iterator.hasNext()){
         
         
                 String s = iterator.next();
                 System.out.println(s);
             }
    
  1. 增强for

     for (String s : collection) {
         
         
                 System.out.println(s);
             }
     //s是临时变量,如果修改了增强for中的变量是不会改变集合中原本的数据
    
  1. Lambda遍历

      collection.forEach(s->System.out.println(s));
    
Set<String>set1=new HashSet<>();
Set<String> set = list.stream().collect(Collectors.toSet());

==三种通用的遍历方式:
迭代器:在遍历的过程中需要删除元素,请使用迭代器。
增强for、Lambda: 仅仅想遍历,那么使用增强for或Lambda表达式==

image-20240514200830393.png

HashMap

image-20240523123556294.png

==Map是双列集合的顶层接口,他的功能是全部双列集合继承使用的==

        //创建Map集合对象
        Map<String,String> m = new HashMap<>();
        //添加元素
        //put 添加和覆盖
        //如果键不存在则添加,返回null
        // 如果键存在则覆盖,并把原有的数据返回
        m.put("Leo","Ann");
        m.put("Luck","Lucy");
        String s = m.put("Anna","Lucy");
        System.out.println(s);//原数据中没有anna,所以返回null

        String s1 = m.put("Luck","Fuck");
        System.out.println(s1);

        String result = m.remove("Leo");
        System.out.println(result);
        //删除返回被删除的值
        String s2 = m.remove("Luck");
        System.out.println(s2);
        //判断键是否存在
        boolean valueResult = m.containsValue("Lucy");
        System.out.println(valueResult);
        boolean isResult = m.isEmpty();
        if(isResult){
   
   
            System.out.println("集合为空");
        }else{
   
   
            System.out.println("集合不为空");
        }
        System.out.println(m);

        Map<String,String>map = new HashMap<>();
        map.put("Leo","Ann");
        map.put("Luck","Lucy");
        map.put("Anna","Lucy");

        Set<String> keys = map.keySet();

        //增强for循环遍历
        for (String key : keys) {
   
   
            System.out.println(key);
            String value = map.get(key);
            System.out.println(key+"="+value);
        }

        //lambda表达式遍历
        map.keySet().forEach(key->{
   
   
            System.out.println(key);
            String value = map.get(key);
            System.out.println(key+"="+value);
        });

        //迭代器遍历
        Iterator<String> it = map.keySet().iterator();
        while(it.hasNext()){
   
   
            String key = it.next();
            System.out.println(key);
            String value = map.get(key);
            System.out.println(key+"="+value);
        }

        //增强for循环遍历
        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        for (Map.Entry<String,String> entry : entrySet) {
   
   
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }

        for(Map.Entry<String,String> entry : map.entrySet()){
   
   
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }

        //lambda表达式遍历
        map.forEach(new BiConsumer<String, String>() {
   
   
            @Override
            public void accept(String key, String value) {
   
   
                System.out.println(key + "=" + value);
            }
        });
        System.out.println("---------------------");
        map.forEach((String key,String value)->{
   
   
            System.out.println(key+"="+value);
        });

LinkedHashMap

image-20240523124332017.png

二叉树(BinaryTree)

平衡二叉树

红黑树

image-20240515154357633.png

常用快捷键

Alt + enter 一键补全

Alt + insert 一键初始化改写

Ctrl + n 查找类名源代码

Ctrl + b 查看源代码

Ctrl + Alt + m 代码提取,封装成方法

Ctrl + Alt + ← 回到上一个源码类

Ctrl + F12 查找用法

Ctrl + Alt + l 规范代码

Alt + 7 查看代码结构

Ctrl AIT v Runtime.getRuntime();===>Runtime runtime = Runtime.getRuntime();

添加依赖(导包)

在根目录新建lib文件夹,导入代码,并右键点击add as library

目录
相关文章
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
174 37
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
6天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
20天前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
消息中间件 缓存 监控
81 0
|
20天前
|
运维 Java 关系型数据库
【Java笔记+踩坑】SpringBoot基础2——运维实用
SpringBoot程序的打包与运行、临时配置、多环境配置、日志
【Java笔记+踩坑】SpringBoot基础2——运维实用
|
20天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
20天前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
20天前
|
前端开发 Java 数据库连接
【Java笔记+踩坑】SpringBoot——基础
springboot三种配置文件及其优先级、多环境配置、springboot整合junit,mybatis、ssmp综合图书案例
【Java笔记+踩坑】SpringBoot——基础
|
20天前
|
Java 数据库连接 Maven
【Java笔记+踩坑】Maven高级
分模块开发、依赖传递与冲突问题、 可选依赖和排除依赖、聚合和继承、属性、多环境配置与应用、私服安装和使用
【Java笔记+踩坑】Maven高级
下一篇
无影云桌面