【Java 第四篇章】流程控制、容器

简介: 本文档详细介绍了Java中的流程控制、集合类型、数组声明及容器的声明与遍历等内容。在流程控制部分,包括了if、if...else、if...else if...else、switch等语句的使用方法,并提供了具体示例。接着,文档对比分析了Java中单列集合(如HashSet、LinkedHashSet、TreeSet等)与双列集合(如HashMap、LinkedHashMap、Hashtable等)的特点及底层实现原理。此外,还介绍了如何声明与初始化数组,并提供了多种循环结构的使用示例。最后,通过具体的代码示例展示了不同集合类型的声明、基本操作(如添加、删除、更新、查找)以及遍历方法。

一、流程控制

1、概念

    //1.if

    //2.if...else

    //3.if...else if...else...

    //4.switch

    //5.跳出循环体:break和continue

2、语法

    //1. if
    if(条件表达式){
   
   
        //执行代码块
    }

    //2.if...else
    if(条件表达式){
   
   
        //条件表达式为真执行的代码块
    } else {
   
   
        //条件表达式为假执行的代码块
    }

    //3.if...else if...else...
    if(条件表达式){
   
   
        //条件表达式符合条件执行的代码块
    } else if(条件表达式) {
   
   
        //条件表达式符合条件执行的代码块
    } else {
   
   
        //默认执行的代码块
    }

    //4.switch
    switch(expression){
   
   
        case value :
        //语句
        break; //可选
        case value :
        //语句
        break; //可选
        //你可以有任意数量的case语句
        default : //可选
        //语句
    }

3、案例

    public static void main (String[] args) {
   
   
        int a = 15;
        //1.if
        if(a<6){
   
   
            System.out.println("简单的判断语句");
        }
        //2.if...else...
        if(a<6){
   
   
            System.out.println("if...else... 条件表达式为真");
        } else {
   
   
            System.out.println("if...else... 条件表达式为假");
        }

        //3.if...else if...else...
        if(a<6){
   
   
            System.out.println("if...else if...else... 条件表达式为真");
        } else if(a==6){
   
   
            System.out.println("if...else if...else... 条件表达式为假");
        } else {
   
   
            System.out.println("默认执行的代码块");
        }

        //4.switch
        int a = 10;

        switch(a){
   
   
            case 1:
                System.out.println("得分" + a); 
            break;
            case 2:
                System.out.println("得分" + a); 
            break;
            case 3:
                System.out.println("得分" + a); 
            break;
            case 4:
                System.out.println("得分" + a); 
            break;
            case 5:
                System.out.println("得分" + a); 
            break;
            case 6:
                System.out.println("得分" + a); 
            break;
            default:
                System.out.println("没获取得分"); 
        }

二、单列集合和双列集合

1、Java 中单列集合的组成方式由下面的方式构成
collection.png

  • HashSet 的底层数据结构是哈希表,哈希表主要由 hashCode() 和 equals() 两个方法保证唯一性的,首先判断 hashCode() 的值是否相同,如果相同继续执行 equals() 方法,(看返回的结果:如果返回 true:不添加,返回 false:添加)。如果返回不同,直接存入。
  • LinkedHashSet 的底层数据结构是链表和哈希表组成,链表保证元素的有序;哈希表保证元素的唯一性。
  • TreeSet 底层数据结构是红黑树。
  • ArrayList 底层数据结构是数组,查询速度快,增删慢,但是线程不安全,效率高。数据是有序、可重复。
  • Vector 底层数据结构是数组,查询快,增删慢。线程安全、效率低。数据是有序、可重复。
  • LinkedList 底层数据结构是链表,查询慢,增删快。存储数据的特点是数据有序、可重复。

2、Java 中双列集合的组成方式由下面的方式构成

map.png

  • Map 双列集合的特点是数据结构只对 key 值有效和值无关。存储的形式是以 键值 对的形式存储元素的,键 是唯一的,值 可能会重复。
  • HashMap 底层数据结构是哈希表,线程不安全、效率高。哈希表主要依赖的两个方法:hashCode() 和 equals() 执行的顺序是首先判断 hashCode() 值是否相同。如果相同继续执行 equals() 然后再看返回结果, 如果返回 true 说明元素重复,不添加;如果返回 false 就直接添加到集合.
  • LinkedHashMap 底层数据结构是链表和哈希表组成,链表保证元素的有序;哈希表保证数据的唯一性。
  • Hashtable 底层数据结构是哈希表,线程安全,效率低。
  • TreeMap 底层数据结构是红黑树。

三、声明数组

//数组:
    //语法:
        type [] arrayName;
        或者
        type arrayName [];
    //初始化:
        //静态初始化:
            //方式1
            int [] arr = new int[]{
   
   5, 6, 7, 8, 9};
            System.out.println(arr[1]);

            //方式2
            int [] arrName = {
   
   1, 2, 3, 4, 6};
        //动态初始化:
            int [] arrs = new int[5];
    //存值&获取值:
        //获取值
            arrayName[索引位置]
        //存值
            arrayName[索引位置] = 值;
//循环
    // 1.while
        while( 布尔表达式 ) {
   
   
            //循环内容
        }

    //2.do...while...
        //循环至少执行一次
        do {
   
   
            //循环内容
        } while(条件表达式);

    //3.普通for循环
        for(初始化; 布尔表达式; 更新) {
   
   
            //执行代码块
        }

    //4.增强for
        for(声明语句 : 表达式) {
   
   
            //执行代码块
        }

四、容器的声明和遍历

    //HashSet
        package com.tsing.extend.demo9;

        import java.util.HashSet;

        public class DemoHashSet {
   
   

            public static void main(String[] args) {
   
   

                HashSet<String> hs = new HashSet<String>();
                //add
                hs.add("测试1");
                hs.add("测试1");
                hs.add("测试2");
                hs.add("测试3");

                //delete
                hs.remove("测试2");

                //update
                //这个需要配合查询需要删除的元素,然后执行删除操作,最后将新的数据添加进去。

                //search
                for (String str : hs) {
   
   
                    System.out.println(str);
                }
            }
        }

    //TreeSet
        package com.tsing.extend.demo9;

        import java.util.TreeSet;

        public class DemoTreeSet {
   
   

            public static void main(String[] args) {
   
   

                TreeSet<String> ts = new TreeSet<String>();

                //add
                ts.add("ceshi1");
                ts.add("ceshi2");
                ts.add("ceshi3");
                ts.add("ceshi3");
                ts.add("ceshi4");

                //delete
                ts.remove("ceshi4");

                //update
                    //这个需要配合查询需要删除的元素,然后执行删除操作,最后将新的数据添加进去。

                //search
                for (String str : ts) {
   
   
                    System.out.println(str);
                }

            }

        }

    //ArrayList
        package com.tsing.extend.demo9;
        import java.util.ArrayList;

        public class DemoArrayList {
   
   

            public static void main(String[] args) {
   
   

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

                //add
                al.add("ceshi1");
                al.add("ceshi2");
                al.add("ceshi3");
                al.add("ceshi3");
                al.add("ceshi4");

                //delete
                al.remove("ceshi1");
                al.remove(2);//根据索引删除

                //update
                    //这个需要配合查询需要删除的元素,然后执行删除操作,最后将新的数据添加进去。

                //search
                for (String str : al) {
   
   
                    System.out.println(str);
                }

            }

        }

    //Vector
        package com.tsing.extend.demo9;

        import java.util.Vector;

        public class DemoVector {
   
   

            public static void main(String[] args) {
   
   
                Vector<String> v = new Vector<String>();

                //add
                v.add("ceshi1");
                v.add("ceshi2");
                v.add("ceshi3");
                v.add("ceshi4");
                v.add("ceshi4");

                //delete
                v.remove("ceshi1");
                v.remove(3);//根据索引删除数据

                //update
                //这个需要配合查询需要删除的元素,然后执行删除操作,最后将新的数据添加进去。

                //search

                for (String str : v) {
   
   
                    System.out.println(str);
                }
            }
        }

    //LinkedList
        package com.tsing.extend.demo9;

        import java.util.LinkedList;

        public class DemoLinkedList {
   
   

            public static void main(String[] args) {
   
   

                LinkedList<String> ll = new LinkedList<String>();

                //add
                ll.add("ceshi1");
                ll.add("ceshi2");
                ll.add("ceshi3");
                ll.add("ceshi4");
                ll.add("ceshi5");

                //delete
                ll.remove(0);
                ll.remove("ceshi5");

                //update
                ll.set(2, "测试2");

                //search
                for (String str : ll) {
   
   
                    System.out.println(str);
                }
            }
        }

    //HashMap
        package com.tsing.extend.demo9;

        import java.util.HashMap;
        import java.util.Map;
        import java.util.Set;

        public class DemoHashMap {
   
   

            public static void main(String[] args) {
   
   
                HashMap<String,String> map = new HashMap<String, String>();

                //add
                map.put("1", "值1");
                map.put("2", "值2");
                map.put("3", "值3");
                map.put("4", "值4"); //这个覆盖掉
                map.put("4", "值5"); 

                //delete
                map.remove("1");

                //update
                map.put("2", "修改后的值2");

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

            }

        }

    //HashTable
        package com.tsing.extend.demo9;

        import java.util.Hashtable;
        import java.util.Map;
        import java.util.Set;

        public class DemoHashtable {
   
   

            public static void main(String[] args) {
   
   

                Hashtable<String, String> hb = new Hashtable<String, String>();

                //add
                hb.put("1", "值1");
                hb.put("2", "值2");
                hb.put("3", "值3");
                hb.put("4", "值4"); //这个覆盖掉
                hb.put("4", "值5"); 

                //delete
                hb.remove("1");

                //update
                hb.put("2", "修改后的值2");

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

        }

    //TreeMap
    package com.tsing.extend.demo9;

    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;

    public class DemoTreeMap {
   
   

        public static void main(String[] args) {
   
   
            TreeMap<String, String> tm = new TreeMap<String, String>();

            //add
                tm.put("1", "值1");
                tm.put("2", "值2");
                tm.put("3", "值3");
                tm.put("4", "值4"); //这个覆盖掉
                tm.put("4", "值5"); 

            //delete
                tm.remove("1");

            //update
                tm.put("2", "修改后的值2");

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

    //循环
        //1.while
            public static void main (String[] args) {
   
   
                int x = 10;
                while(x < 20) {
   
   
                    System.out.print("value of x : " + x );
                        x++;
                    System.out.print("\n");
                }
            }
        //2.do...while...
            public static void main (String[] args) {
   
   
                int x = 10;
                do{
   
   
                    System.out.print("value of x : " + x );
                        x++;
                    System.out.print("\n");
                } while (x < 12);
            }

        //3.for
            public static void main (String[] args) {
   
   
                for(int i = 0; i <= 10; i++){
   
   
                    System.out.println("执行了第" + i + "次");
                }
            }

        //4.增强for
            public static void main (String[] args) {
   
   
                String[] names = {
   
    "李栋", "王彦舒", "老子恨你" };
                for( String name : names ) {
   
   
                    System.out.println(name);
                };
            }
目录
相关文章
|
Java 虚拟化 容器
(Java)Java里JFrame窗体的基本操作(容器布局篇-1)
容器 容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。 既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 ???? 本篇内容,将说明java JFrame窗体里容器中几类布局。 说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里 绝对布局 调用窗体容器
335 1
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
3463 1
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
616 7
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
1327 5
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
2261 0
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
1420 111
|
安全 Java 程序员
《从头开始学java,一天一个知识点》之:控制流程:if-else条件语句实战
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《for与while循环的使用场景》。 ---
451 19
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
1333 64
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
578 3
|
安全 Java 数据库
使用Java实现用户的注册和登录流程
以上提供了用户注册和登录的基本框架和必要的说明。在具体的应用场景中,可能还需结合框架特性如Spring Security等提供的高级特性来实现更为完备和安全的用户认证机制。在开发期间,务必注重代码的安全性、清晰性和可维护性,为用户资料保驾护航。
883 13