JavaSE第三章 访问修饰符,Collection,List

news2024/12/24 2:32:28

这里写目录标题

  • 一 访问修饰符
  • 二 集合
    • 1.1 数组
    • 1.2 集合
    • 1.3 读Collection的源码
      • 1.3.1 add添加方法
      • 1.3.2 clear,size,isEmpty方法
      • 1.3.3 remove 方法
      • 1.3.4 equals方法与contain方法
      • 1.3.5 遍历,迭代器或者增强for循环
      • 1.3.6 迭代器重点
    • 1.4 List
      • 1.4.1 List的增删改查操作
      • 1.4.2 实现一个电影票评分的统计
        • 测试类02:控制台输出
        • 测试类02结果
        • 测试类03 JDBC链接数据库
        • 测试类03结果
      • 1.4.3 ArrayList实现类
      • 1.4.4 vector实现类
      • 1.4.5 泛型

一 访问修饰符

在这里插入图片描述

二 集合

数组,集合,都是对多个数据进行存储操作的,我们称之为容器
这里的存储是在内存层面进行存储的,而不是mybatis等持久化存储的方式(数据库)

1.1 数组

  • 数组一旦指明了长度,那么长度就被确定了,不可更改
int [] arr=new int[6]
  • 数组只能存储一种类型的数据
int  []arr,String[]s

缺点

  • 长度不可变
  • 删除增加元素效率低
  • 其中存的元素有序,用下标确定顺序

1.2 集合

不同集合的底层结构不一样
在这里插入图片描述

集合分为两块Collection和Map

//集合有一个特点:只能存放引用数据类型的数据,不能是基本数据类型
//基本数据类型自动装箱,对应包装类。int--->Integer
  • 存储一个个的存数据,List
    主要是Collection接口,底下有两个子接口,继承了这个Collection接口的一些特性,List子接口implements两个实现类,分别是ArrayList和LinkedList,ArrayList的底层是Object类型的数组,所以可以放多种数据
  • 一对一对的存数据, Map
    Map底下两个实现类,HashMap和TreeMap
    集合的应用场合
    前端点击发送请求到后端,后端把实现逻辑,做成一个请求的事件,给数据库,数据库再把符合实现逻辑的信息,封装成一个数据包,发给后端,再被前端读取

1.3 读Collection的源码

主要包括增删改查判断五个部分

1.3.1 add添加方法

public class Test01 {
    public static void main(String[] args) {
        Collection col=new ArrayList<>();
        col.add(18);
        col.add(12);
        col.add(11);
        col.add(17);
        System.out.println(col);
    }
}

1.3.2 clear,size,isEmpty方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        Collection col=new ArrayList<>();
        col.add(18);
        col.add(12);
        col.add(11);
        col.add(17);
        System.out.println(col);
        List list= Arrays.asList(new Integer[]{11,15,3,7,1});
        col.addAll(list);//将另一个集合添加到col中去
        System.out.println(col);
        col.clear();//清空集合的全部内容
        System.out.println(col);
        System.out.println("集合判空操作:"+col.isEmpty());
        System.out.println("判断集合长度:"+col.size());

    }
}

1.3.3 remove 方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        Collection col=new ArrayList<>();
        col.add(18);
        col.add(12);
        col.add(11);
        col.add(17);
        System.out.println(col);
        List list= Arrays.asList(new Integer[]{11,15,3,7,1});
        col.addAll(list);//将另一个集合添加到col中去
        System.out.println(col);
        //col.clear();//清空集合的全部内容
        System.out.println(col);
        System.out.println("集合判空操作:"+col.isEmpty());
        System.out.println("判断集合长度:"+col.size());
        System.out.println("去除集合中指定元素:"+col.remove(15));

    }
}

1.3.4 equals方法与contain方法

import java.util.ArrayList;
import java.util.Collection;

public class Test02 {
    public static void main(String[] args) {
        Collection col1=new ArrayList<>();
        col1.add(1);
        col1.add(2);
        Collection col2=new ArrayList<>();
        col2.add(1);
        col2.add(2);
        System.out.println(col2.equals(col1));
        System.out.println(col2.contains(3));
    }
}

1.3.5 遍历,迭代器或者增强for循环

hasnext,有没有下一个元素,有就返回true,没有就返回false
next方法,把指针下移

package com.xyt.test01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Objects;

public class Test03 {
    public static void main(String[] args) {
        Collection collection=new ArrayList<>();
        collection.add(18);
        collection.add(12);
        collection.add(11);
        collection.add(17);
        //对集合遍历,普通for循环,获取不到元素
      /* for (int i = 0; i < collection.size(); i++) {
            collection.
        }
       */
        //增强for循环
        for (Object o:collection){
            System.out.println(o);
        }
        //方式三
        Iterator it = collection.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

1.3.6 迭代器重点

package com.xyt.test01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test04 {
    //这是main方法,程序的入口
    public static void main(String[] args) {
        Collection collection=new ArrayList();
        collection.add(88);
        collection.add(89);
        collection.add(100);
        collection.add(101);
        Iterator iterator= collection.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

1.4 List

子接口继承自父collection接口

1.4.1 List的增删改查操作

面试题:List遍历方式有三种,foreach ,itreactor迭代器,下标遍历

package com.xyt.test02;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        /**
         * List接口的常用方法
         * add,remove,set,get 增删改查
         */
        List list=new ArrayList<>();
        list.add(13);
        list.add(15);
        list.add(17);
        list.add(19);
        list.add("abc");
        System.out.println(list);
        // 放到下标为3的区域 [13, 15, 17, 66, 19, abc],说明数组下标从0开始
        list.add(3,66);
        System.out.println(list);
        list.remove("abc");
        System.out.println(list);
        //[13, 15, 17, 66, 19]  按照元素名移除
        list.remove(2);
        // [13, 15, 66, 19] 按照下标移除
        System.out.println(list);
        list.set(3,67);
        System.out.println(list);
        // [13, 15, 17, 67, 19, abc]  说明下标为3的元素值被修改为了67

        Object o=list.get(0);
        System.out.println(o);
        // 13
        System.out.println("-------------------------------");
        //list集合。遍历的三种方式
        //方式一:普通下标遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("--------------------------------");
        //方式二:增强for循环
        for (Object obj:
             list) {
            System.out.println(obj);
        }
        System.out.println("----------------------------------");
        //方式三:迭代器
        Iterator iterator= list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

1.4.2 实现一个电影票评分的统计

Movie类:

public class Movie {


    private String movieName;
    private double movieScore;
    private String movieActor;
    // 空参数构造器,相当于一个JavaBean对象,主要反射的应用
    public Movie() {

    }
    //movieActor是一个传过来的变量值,而this.movieActor是特指的内部变量名
    public Movie(String movieName,String movieActor,double movieScore){
        this.movieActor=movieActor;
        this.movieName=movieName;
        this.movieScore=movieScore;

    }
    public String getMovieName() {
        return movieName;
    }

    public void setMovieName(String movieName) {
        this.movieName = movieName;
    }
    public double getMovieScore() {
        return movieScore;
    }

    public void setMovieScore(double movieScore) {
        this.movieScore = movieScore;
    }

    public String getMovieActor() {
        return movieActor;
    }

    public void setMovieActor(String movieActor) {
        this.movieActor = movieActor;
    }

    public Movie(String movieName) {
        this.movieName = movieName;
    }

}

测试类02:控制台输出

package com.xyt.test02;

import java.util.ArrayList;

public class Test02 {
    public static void main(String[] args) {
        ArrayList<Movie>  movies=new ArrayList<>();
        Movie aMovie=new Movie("肖申克的救赎","汤姆·克鲁斯",9.8);
        Movie bMovie=new Movie("让子弹飞","姜文",8.8);
        Movie cMovie=new Movie("1942","张国立",8.9);
       //把值赋给结构体链表中
        movies.add(aMovie);
        movies.add(bMovie);
        movies.add(cMovie);
        //依次读取元素的值
        for (int i = 0; i < movies.size(); i++) {
            Movie tMovie=movies.get(i);
            System.out.print("电影名字: "+tMovie.getMovieName());
            System.out.print("电影主角: "+tMovie.getMovieActor());
            System.out.print("电影评分: "+tMovie.getMovieScore());
            System.out.println();

        }



    }
}

测试类02结果

在这里插入图片描述

测试类03 JDBC链接数据库

测试类03结果

1.4.3 ArrayList实现类

源码类似于StringBuilder,底层用一个数组和一个count写的

在这里插入图片描述
在JDK1.7和JDK1.8里面。存在一定差距
1.7 数组长度初始化为10,扩容的时候扩展为原数组的1.5倍
1.8初始胡长度为空,调用构造器后才开始创造长度为10的数组
换JDK版本的方法
在这里插入图片描述

1.4.4 vector实现类

虽然vector已经被淘汰,底层Object数组
底层扩容2倍,带有sythorized关键字,线程安全
底层都是数组,查询效率高,缺点是删除增加麻烦

1.4.5 泛型

相当于数据分类的一种形式,比如说,按照下图所展示得ArrayList直接存,会出现问题,相当于做饭的调料都混在一起了

package com.xyt.test03;

import java.util.ArrayList;

public class Test01 {
    public static void main(String[] args) {
        ArrayList a1=new ArrayList<>();
        //录入成绩
        a1.add(98);
        a1.add(99);
        a1.add(100);
        a1.add(78);
        a1.add("谢意");
        for (Object obj:a1
             ) {
            System.out.println(obj);
        }
    }
}

加入泛型后,在编译时期,就会对这些编译对象进行检查,如果出错,类型就加入不进去
泛型就是<>里面的数据类型,这个类型在具体使用时候才会确定

ArrayList<Integer> al = new ArrayList<>();  --<>  ---钻石运算符
package com.xyt.test03;

import java.util.ArrayList;

public class Test01 {
    public static void main(String[] args) {
        ArrayList<Integer> a1=new ArrayList<Integer>();
        //录入成绩
        a1.add(98);
        a1.add(99);
        a1.add(100);
        a1.add(78);
       // a1.add("谢意");  会报错,防止数据浑水摸鱼,写到数据库里面去
        for (Integer in:a1
             ) {
            System.out.println(in);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

numpy的下载、数据类型、属性、数组创建

下载numpy 因为numpy不依赖于任何一个包所以numpy可以直接使用pip命令直接下载 下载命令&#xff1a; pip install numpy # 默认从https://pypi.org/simple 下载 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 从清华大学资源站点下载 pip install nump…

一步步解密微商城系统开发流程

作为现代商业的重要组成部分&#xff0c;电子商务系统的建设对于企业的发展至关重要。然而&#xff0c;对于一些小型企业来说&#xff0c;建设一个完整的电子商务系统可能会耗费大量的时间和金钱。微商城系统的出现有效地解决了这个问题&#xff0c;因为它可以在不需要太多资金…

趣说数据结构(练习1) —— 顺序表/链表力扣刷题

练习 1 —— 顺序表/链表力扣刷题 1. 合并两个有序链表 力扣题目地址&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists/ 问题描述&#xff1a;将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#x…

【云计算•云原生】4.云原生之什么是Kubernetes

文章目录 Kubernetes概念Kubernetes核心概念集群podConfigMap Kubernetes架构master节点的组件worker节点组件 Kubernetes网络架构内部网络外部网络 k8s各端口含义 Kubernetes概念 K8S就是Kubernetes&#xff0c;Kubernetes首字母为K&#xff0c;末尾为s&#xff0c;中间一共有…

全球5G市场最新进展及未来展望

从智慧医疗到万物互联&#xff0c;从无人驾驶到关乎我国未来发展的“新基建”&#xff0c;自2019年全球5G商用启动后&#xff0c;5G就步入了发展“快车道”;2022年继续保持快速稳定的增长态势&#xff0c;在网络建设、人口覆盖、终端形态等方面发展势头强劲&#xff0c;在技术标…

1695_week2_算法与函数(MIT使用Python编程学习手记)

全部学习汇总&#xff1a; GreyZhang/python_basic: My learning notes about python. (github.com) 首先说明一下&#xff0c;这部分信息的整理只是我个人的理解。由于自己的知识功底以及英语水准&#xff0c;很可能会有大量的疏漏。再此&#xff0c;我只想把自己学习时候的一…

C++(类和对象上篇)

本节目标&#xff1a; 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 目录 1、面向过程和面向对象初步认识 2、类的引入 4.类的访问限定符及封装 4.1访问限定…

为了做低代码平台,这些年我们对.NET的DataGridView做的那些扩展

我们的低代码开发平台从一开始决定做的时候&#xff0c;就追求未来能够支持多种类型的客户端&#xff0c;目前支持Winform&#xff0c;Web&#xff0c;H5&#xff0c;FlutterAPP&#xff0c;当然了&#xff0c;未来也有可能会随着实际的需要淘汰掉一些客户端的。 为了系统更易…

springboot - 实现动态刷新配置

自定义的配置数据源&#xff0c;继承自Spring框架的 MapPropertySource 类&#xff0c;从一个名为 my.properties 的文件中读取配置信息&#xff0c;并在每10秒钟刷新一次。 这里不加Component&#xff0c;是因为&#xff1a; FilePropertiesSource filePropertiesSource new…

辨析 总结PMP各种BS结构

OBS 组织分解结构、BOM 物料清单、WBS工作分解结构、RBS 资源分解结构、RBS 风险分解结构、RAM 责任分匹配矩阵辨析 组织分解结构 OBS&#xff08;Organizational Breakdown Structure&#xff09; 描述了执行组织的层次结构&#xff0c;以便把工作包同执行组织单元相关联 物料…

电子邮件SDK:MailBee.NET 12.3.1 Crack

MailBee.NET 对象捆绑包包括SMTP、POP3、IMAP、EWS、安全、反垃圾邮件、Outlook 转换器、地址验证器、PDF组件以及BounceMail、HTML、MIME、ICalVCard组件&#xff0c;这些组件是一项常用功能。 MailBee.NET Objects是一组强大且功能丰富的 .NET 组件&#xff0c;用于创建、发送…

Haffman编码(算法导论)

上次算法导论课讲到了Haffman树&#xff0c;笔者惊叹于Haffman编码的压缩效果&#xff0c;故想自己亲自动手尝试写一个极简的Haffman压缩程序。 首先&#xff0c;我们来了解一下什么是Haffman编码 Haffman编码 赫夫曼编码可以很有效地压缩数据&#xff1a;通常可以节省20%&am…

UNIX环境高级编程——进程关系

9.1 引言 本章详细说明进程组以及会话的概念&#xff0c;还将介绍登录shell&#xff08;登录时所调用的&#xff09;和所有从登录shell启动的进程之间的关系。 9.2 终端登录 9.3 网络登录 9.4 进程组 每个进程除了有一进程ID之外&#xff0c;还属于一个进程组&#xff0c;进…

一曲微茫度余生 ——川剧《李亚仙》唱响香港西九戏曲中心

2023年4月28日晚&#xff0c;香港西九戏曲中心灯火辉煌。重庆市川剧院携手成都市川剧研究院带来的川剧《李亚仙》首场演出在这个为戏曲而设的世界级舞台重磅上演。 此次访演受香港西九戏曲文化中心的邀请&#xff0c;原重庆市文化和旅游发展委员会党委书记、主任刘旗带队&…

『LogDashboard』.NET开源的日志面板——登录授权页面扩展

&#x1f4e3;读完这篇文章里你能收获到 了解LogDashboard扩展开源项目——LogDashboard.Authorization掌握LogDashboard扩展内置登录页的使用方式 文章目录 一、LogDashbaord介绍1. 功能支持2. 快速开始 二、LogDashboard.Authorization1. 功能介绍2. 项目接入3. 更多示例 一…

Python语法学习

目录 Openmv用micro python开发的原因 print函数 列表 元组 判断 if...else... if...elif...else 循环 for循环 while循环 强制类型转换 点灯之路 点个不同颜色的闪烁LED 本文章仅作为个人的Openmv学习笔记&#xff0c;有问题欢迎指正~ Openmv用micro python开发…

【MPC|云储能】基于模型预测控制(MPC)的微电网调度优化的研究(matlab代码)

目录 1 主要内容 2 程序难点及问题说明 3 部分程序 4 下载链接 1 主要内容 该程序分为两部分&#xff0c;日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面方法&#xff0c;根据每个居民的实际需要得到响应储能充放电功率&#xff0c;优化得到整体…

性能测评:阿里云服务器ECS通用型g8i实例CPU内存安全存储

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器&#xff0c;3.2 GHz睿频&#xff0c;g8i实例采用阿里云全新CIPU架构&#xff0c;可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…

真题详解(DNS)-软件设计(六十三)

真题详解&#xff08;有向图&#xff09;-软件设计&#xff08;六十二)https://blog.csdn.net/ke1ying/article/details/130443040 顺序存储&#xff1a;元素和存储空间相对位置来表示数据元素之间逻辑关系。 RFB&#xff1a;远程访问图形用户界面的简单协议。 在ISO/IEC9126软…

【五一创作】跑alpaca-lora语言模型的常见问题(心得)

训练部署alpaca-lora语言模型常见问题 Alpaca-Lora是一个开源的自然语言处理框架&#xff0c;使用深度学习技术构建了一个端到端的语言模型。在训练和部署alpaca-lora语言模型时&#xff0c;可能会遇到一些常见问题。本文将介绍一些这些问题及其解决方法。 1. bitsandbytes版…