JAVA复习之流程控制、数组、泛型、集合

news/2024/11/8 2:44:57/

一、详细教程见: 程序结构(流程控制语句)

在这里插入图片描述

二、注意事项:

1、case不可以使用浮点类型
2、如果遇到循环嵌套情况,break语句只会使程序流程跳出包含它的最内层的循环结构,即跳出一层循环
3、break、continue提供了“标签”的功能
在这里插入图片描述

三、数组

在这里插入图片描述
例题解析:
一个3 x 3的网络,将1到9的数字放入方格,达到能够使得每行每列以及每个对角线的值相加都相同。

public class NineGrids {// 创建NineGrids类public static void main(String[] args) {// 声明int类型的数组并分配内存(三阶方阵)int arr[][] = new int[3][3];// 确定数字“1”的位置int a = 2;// 第3行的下标int b = 3 / 2;// 第2列的下标for (int i = 1; i <= 9; i++) {// 给数组赋值arr[a++][b++] = i;// 避免数组下标越界if (i % 3 == 0) {// 如果i是3的倍数a = a - 2;b = b - 1;} else {// 如果i不是3的倍数a = a % 3;b = b % 3;}}System.out.println("九宫格:");// 遍历数组for (int i = 0; i < 3; i++) {for (int j = 0; j < arr.length; j++) {System.out.print(arr[i][j] + " ");// 输出数组中的数据}System.out.println();// 换行}}
}

四、泛型

(一)什么是泛型?(使程序可以定义安全的数据类型)

java中的参数化类型被称为泛型,下图为例
在这里插入图片描述

(二)定义泛型类

**语法:**类名<类型参数1,类型参数2,…类型参数n>{}

public class Demo<T>{T username;T method(T t){}
}

(三)泛型的用法

在开发过程中,如果需要动态地指定参数类型,那么就需要使用泛型。

1.定义泛型类时声明多个类型

class method<T1,T2>

2.定义泛型类时声明数组类型

定义泛型类型时也可以声明数组类型

2.集合类声明元素的类型

在集合中应用泛型可以保证集合中元素类型的唯一性。从而提高代码的安全性和可维护性。

(四)泛型如何使用

public class Demo030<T> {T bankName; //银行名称T time; //存款时间T username; //户名T cardNum; //卡号T currency; //币种T inAccount; //存款金额T leftAccount; //账户余额public static void main(String[] args) {Demo030<Object> list = new Demo030<Object>(); //创建一个String类型的BankList对象list.bankName = "中国建设银行"; //初始化“银行名称”list.time = new Date(); //初始化“存款时间”list.username = "赵四"; //初始化“户名”list.cardNum = "6666 7777 8888 9996 789"; //初始化“卡号”list.currency = "RMB"; //初始化“币种”list.inAccount = 8888.00; //初始化“存款金额”list.leftAccount = 18888.89; //初始化“账户余额”DecimalFormat df = new DecimalFormat("###,###.##"); //创建DecimalFormat对象,用来格式化Double类型的对象System.out.println("银行名称:" + list.bankName+ "\n存款时间:" + list.time+ "\n户  名:" + list.username+ "\n卡  号:" + list.cardNum+ "\n币  种:" + list.currency+ "\n存款金额:" + df.format(list.inAccount)+ "\n账户余额:" + df.format(list.leftAccount)); //输出上述信息}
}

五、集合类的概述

(一)数组真的好用吗?数组和集合的不同之处?

不好用,因为数组长度是固定的,集合的长度是可变的(像列车一样,可动态的加车厢),数组既可以存放基本数据类型,又可以存放对象,集合只能存放对象,集合包括(LIst、set和Map集合)
在这里插入图片描述

(二)Collection接口的常用方法及说明

在这里插入图片描述

(三)List集合

List集合包括List接口以及List接口的所有实现类
①List集合中的元素允许重复,且各元素的顺序就是添加元素的顺序
②用户可以通过索引访问集合中的元素
1、List接口
在这里插入图片描述
2、List接口的实现类
①ArrayList以数组的形式保存集合中的元素,能够根据索引位置随机且快速地访问集合中的元素。
②LinkedList以链表结构保存集合中的元素,随机访问集合中元素的性能较差,但向集合中插入元素和删除集合中的元素的性能出色。
List list = new ArrayList<>();
List list2 = new LinkedList<>();
在这里插入图片描述
3、Iterator迭代器(优点:遍历集合中所有的元素且执行效率高)
在这里插入图片描述
在这里插入图片描述
4、案例剖析

import java.util.*;public class Demo01 {public static void main(String[] args) {//实例化集合类对象List<String> list = new ArrayList<>();//向集合中添加元素list.add("a");list.add("b");list.add("c");list.add("12314213");//创建迭代器Iterator<String> it = list.iterator();//判断是否有下一个元素while (it.hasNext()){//获取集合中的元素String str = it.next();//打印System.out.println(str);}}
}
(四)Set集合

Set集合中的元素不按特定的方式排序,只是简单地被放在集合中,且Set集合中的元素不能重复。
在这里插入图片描述
1、TreeSet(树集合,存放有序)
在这里插入图片描述
2、TreeSet类增加的方法
在这里插入图片描述
HashSet类和TreeSet类都是Set接口的实现类,它们都不允许有重复元素。但HashSet类在遍历集合中的元素时是不关心元素的顺序,而TreeSet类则会按自然顺序(升序排列)遍历集合中的元素
3、案例剖析

public class Person implements Comparable {int id;int age;String name;@Overridepublic int compareTo(Object o) {Person p;//判断是否为person类if(o instanceof Person){//强制转换p = (Person)o;}else{//表示传入的参数比我本身要小return -1;}int diff = this.age - p.age;if(diff != 0){//差值除以本身绝对值,可以得到+1 或者-1的值diff = diff / Math.abs(diff);}return diff;}public Person(int id, int age, String name) {this.id = id;this.age = age;this.name = name;}@Overridepublic String toString() {return "Person{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}
}
public class Demo {public static void main(String[] args) {Set set = new TreeSet();Person p1 = new Person(1,18,"熊猫");Person p2 = new Person(2,33,"小明");Person p3 = new Person(3,22,"梦缘");//添加到集合set.add(p1);set.add(p2);set.add(p3);set.add(p3);//重复的元素不会被添加到集合中System.out.println(set.size());//创建迭代器Iterator it = set.iterator();while (it.hasNext()){System.out.println(it.next());}}
}

在这里插入图片描述

(五)Map集合

在这里插入图片描述
方法:keySet() 返回该集合中的所有key对象形成的set集合
values()返回该集合中所有值对象形成的Collection集合

在这里插入图片描述
1、案例剖析一

import java.util.*;
public class HashMapTest {public static void main(String[] args) {Map<String, String> map = new HashMap<>(); // 创建Map集合对象map.put("ISBN 978-7-5677-8742-1", "Android项目开发实战入门"); // 向Map集合中添加元素map.put("ISBN 978-7-5677-8741-4", "C语言项目开发实战入门");map.put("ISBN 978-7-5677-9097-1", "PHP项目开发实战入门");map.put("ISBN 978-7-5677-8740-7", "Java项目开发实战入门");Set<String> set = map.keySet(); // 构建Map集合中所有key的Set集合Iterator<String> it = set.iterator(); // 创建Iterator迭代器System.out.println("key值:");while (it.hasNext()) { // 遍历并输出Map集合中的key值System.out.print(it.next() + " ");}Collection<String> coll = map.values(); // 构建Map集合中所有value值的集合it = coll.iterator();System.out.println("\nvalue值:");while (it.hasNext()) { // 遍历并输出Map集合中的value值System.out.print(it.next() + " ");}}
}

多学俩招:建议使用HashMap类实现Map集合,因为由HashMap类实现的Map集合添加和删除映射关系的效率更高;而且希望Map集合中的元素存在一定的顺序,应该使用TreeMap类实现Map集合。

(六)小结

1、List集合关注的是索引,List集合中的元素是有存放顺序的;
2、Set集合关注的唯一性,它的值不允许重复;
3、Map集合关注的是唯一的标识符(key),它将唯一的键映射到某个元素;
在这里插入图片描述


http://www.ppmy.cn/news/706790.html

相关文章

Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)

文章目录 修改虚拟机IP复制网卡的配置 Vi编辑器的常用命令实操部分复制网卡的配置 Hadoop集群初体验20、secondarynameNode如何辅助管理FSImage与Edits文件 ⭐⭐⭐21、SecondaryNamenode存在的意义是什么&#xff1f; ⭐⭐⭐⭐22、SecondaryNamenode工作的触发因素有哪些&#…

MySQL索引【详解】

给大家推荐一款好用的CSDN云服务&#xff0c;新人首购折扣哦&#xff0c;点击下图跳转&#xff1a; 文章目录 第一篇 什么是索引&#xff1f;1、来看一个问题方案1方案2方案3方案4 2、索引是什么&#xff1f; 第二篇 MySQL索引原理详解1、背景2、预备知识什么是索引&#xff1…

服务器域名HTTP

目录 服务器域名层次结构解析过程 HTTPHTTP请求过程get和post的区别 服务器 什么是服务器&#xff1a; 服务器&#xff08;server&#xff09;&#xff0c;就是一种特殊的计算机&#xff0c;也包括处理器、硬盘、内存、系统总线等&#xff0c;但是由于需要提供更可靠的服务&…

【星球问答精选】我想打造个性化的高效工作流,不会编程怎么办?

题图&#xff1a;Photo by Christin Hume on Unsplash 知识星球上&#xff0c;星友 Kevin 提问&#xff08;为保护隐私&#xff0c;有删节&#xff09;&#xff1a; 王老师您好&#xff0c;我是您的超级忠实读者以及新晋工具爱好者。由于新晋&#xff0c;所以感觉在接触时会遇见…

数据结构:栈

数据结构&#xff1a;栈 作为本人新开的类型&#xff0c;我就思考了很久&#xff0c;最后决定写与数据结构有关的博客。说到数据结构&#xff0c;我们首先想到的就是栈。 不 怎 么 华 丽 的 分 割 线 一、简介 栈&#xff0c;是只能在某一端插入和删除的特殊线性表。 栈和我…

机器学习基础知识点

机器学习基础知识点 文章目录 机器学习基础知识点监督学习回归线性回归岭回归lasso回归 分类k最近邻分类朴素贝叶斯分类logistic回归支持向量机 其他随机梯度下降线性判别分析决策树 无监督学习聚类k均值分层次聚类谱聚类高斯混合模型 降维PCA降维LLE降维MDS和t-SNE独立成分分析…

排列组合总结

目录 简介 P 的由来 C 的由来 组合数的公式直观解释 组合公式Ⅰ 组合公式Ⅱ 组合公式Ⅲ 组合公式Ⅳ 组合公式Ⅴ 参考了 https://www.zhihu.com/question/26094736 简介 排列组合是组合学最基本的概念。所谓排列&#xff0c;就是指从给定个数的元素中取出指定个数的…

【ReView】 学习日志 form18/7/20 to18/11/11

前言&#xff1a;在NOIP2018入门的时候并不写博客在比赛前整理了这篇正文&#xff1a;有些时候只能写部分分的题目就完成不想写......而且一些东西知道是什么算法就很难动手写暴力了.....然后觉得就不如吃透一些题目吧......写在这里也没什么用只是复习的时候一看&#xff01;就…