一些java基础的查漏补缺
Arrays类
数组的工具类。
包含用于操作数组的各种方法,比如排序和搜索。
就是平时常用的那些跟数组有关系方法
Arrays类总的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用(是不用,不是不能)。
常用方法:
给数组赋值:fill
数组升序:sort
比较数组:equals
查找数组元素:binarySearch方法能对排序好的数组进行二分查找法操作。
冒泡排序
总共有八大排序,冒泡排序是最为出名的。
两层循环,外层冒泡轮数,里层依次比较。
package com.company;
import java.util.Arrays;
public class Main {
//冒泡排序
//比较数组中相邻的两个元素,如何第一个数比第二个数大,就交换位置,每一次比较都会产生一个最大或者最小的数字,下一轮则可以少排序依次,依次循环直到结束
public static void main(String[] args) {
int[] a = {1,3,6,2,77,22,8,3,4};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int [] array){
//临时变量
int temp = 0;
//外层循环,判断走多少次
for (int i = 0;i < array.length-1; i++){
//十个数只需要比较9次,所以外层循环次数-1
//内层循环,比较判断两个数,如果第一个比第二个大就交换位置
for(int j = 0;j < array.length-1-i;j++){
if(array[j+1]>array[j]){
temp = array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
return array;
}
}
稀疏数组
当二维数组中很多值是默认值0,因此记录了很多没有意义的数据。
解决:稀疏数组
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方式是:记录数组有几行几列,有多个不同值
把具体的不同值的原色和行列及值记录咋一个小规模的数组中,从而缩小程序的规模
共几行 | 共几列 | 几个不同值 |
---|---|---|
第几行 | 第几列 | 不同值 |
package com.company;
public class Main {
public static void main(String[] args) {
//1.创建一个二维数组 11*11 0:没有棋子 1:黑棋 2:白棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//输出原始的数组
System.out.println("输出原始数组");
for (int[] ints : array1){
for (int anInt :ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
//转换为稀疏数组来保存
//获取有效值个数
int sum = 0;
for (int i=0; i<11;i++){
for (int j=0;j<11;j++){
if(array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的个数:"+sum);
//2.创建一个稀疏数组的数组
int[][] array2=new int [sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//遍历二维数组,将非零的值,存放在稀疏数组中
int count = 0;
for(int i=0;i< array1.length;i++){
for(int j=0;j< array1[i].length;j++){
if(array1[i][j]!=0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
//输出稀疏数组
System.out.println("稀疏数组:");
for (int i =0;i< array2.length;i++){
System.out.println(array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][2]+"\t");
}
System.out.println("稀疏数组还原:");
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
for (int[] ints : array3){
for (int anInt :ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!