【化神系列】 Array的基本使用(下)

简介: Array的基本使用(下)

一、数组的基本使用

1. 数组转字符串
    /**
     * 数组转字符串
     * @param args
     */
    public static void main(String[] args) {
        int[] array = {2,5,6,7,8};
        String ret = Arrays.toString(array);
        System.out.println(ret);
    }

image-20220812213515631

简单模拟实现
 public static String myTostring(int[] tmp){
        String ret ="[";
        int i;
        if(tmp == null){
            return null;
        }
        for (i =0;i<tmp.length;i++) {
            ret += tmp[i];

            if (i != tmp.length - 1) {
                ret += ",";
            }
        }
        ret+="]";
        return ret;
    }
2. 数组的拷贝
  • Arrays.copyof()
public static void main(String[] args) {
// newArr和arr引用的是同一个数组
// 因此newArr修改空间中内容之后,arr也可以看到修改的结果
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = arr;
        newArr[0] = 10;
        System.out.println("newArr: " + Arrays.toString(arr));
// 使用Arrays中copyOf方法完成数组的拷贝: copyOf方法在进行数组拷贝时,创建了一个新的数组
// arr和newArr引用的不是同一个数组
        arr[0] = 1;
        newArr = Arrays.copyOf(arr, arr.length);
        System.out.println("newArr: " + Arrays.toString(newArr));
// 因为arr修改其引用数组中内容时,对newArr没有任何影响
        arr[0] = 10;
        System.out.println("arr: " + Arrays.toString(arr));
        System.out.println("newArr: " + Arrays.toString(newArr));
// 拷贝某个范围.
        int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("newArr2: " + Arrays.toString(newArr2));
//利用copyof特性,对数组实现扩容
        int[] newArr3 = Arrays.copyOf(arr,2*arr.length);
        System.out.println(Arrays.toString(newArr3));
}

image-20220813212437006-----

  • Arrays.copyof()源码

image-20220813211833285

  • arraycopy
int[] arr = {1,2,3,4,5,6};
int copy[] = new int[arr.length];
System.arraycopy(arr,0,copy,0,arr.length-3);
////(被拷贝的数组1,拷贝数组1的起始位置,目的数组2,数组2的起始位置,拷贝长度)
//支持局部的拷贝
System.out.println("copy: " + Arrays.toString(copy));

image-20220813223627519

Arrays.copyofRange
int[] arr = {1,2,3,4,5,6};     
int copy2[] = Arrays.copyOfRange(arr,3,5);
//拷贝的下标范围为[3,5);
System.out.println(Arrays.toString(copy2));

image-20220813224522412

array.clone()
int[] arr = {1,2,3,4,5,6};   
int copy3[] = arr.clone();
System.out.println("arr: "+Arrays.toString(arr));
System.out.println("copy3: "+Arrays.toString(copy3));

image-20220813225053109

3.数组的排序
int array[] = {1,4,5,3,6,2};
System.out.println("排序前");
System.out.println(Arrays.toString(array));
Arrays.sort(array);
System.out.println("排序后");
System.out.println(Arrays.toString(array));

image-20220813225626779

二、二维数组

二维数组的初始化

image-20220819220107362

二维数组特点

image-20220819215950137

二维数组打印
int[][] data = new int[10][5];
for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[0].length; j++) {
        data[i][j] = i * j;
    }
}

//int[] data1 : data 一维数组 :二维数组  外层 
for (int[] data1 : data) {   一维数组元素 : 一维数组 n
    for (int data2 : data1)
        System.out.printf("%d\t", data2);
    System.out.println();   
}

image-20220819220236502

Arrays.toString打印的是每行的地址 ,使用Arrays.deepToString打印的是元素

二维数组中元素的查找

i : array.length;外层

j : array[0].length内层

public class Solution {
    public boolean Find(int target, int [][] array) {
        for(int i = 0;i<array.length;i++){
            for(int j = 0;j<array[0].length;j++){
                if(array[i][j] == target)
                    return true;
            }
        }
        return false;
    }
}
相关文章
|
存储 消息中间件 分布式计算
|
10月前
|
存储 监控 网络安全
阿里云可观测 2025 年 1 月产品动态
阿里云可观测 2025 年 1 月产品动态。
210 75
|
消息中间件 Java Kafka
Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
Kafka启动遇到ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
1645 0
|
Java 网络安全 Nacos
nacos注册不上刷这个错,有解决方案吗?
【2月更文挑战第30天】nacos注册不上刷这个错,有解决方案吗? springboot项目,瘦身打包后,用java -jar 外置依赖和外置配置文件启动的时候,nacos注册不上刷这个错,有解决方案吗? com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
1227 1
|
存储 分布式计算 Hadoop
|
11月前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。
237 14
|
机器学习/深度学习 分布式计算 Cloud Native
云原生架构下的高性能计算解决方案:利用分布式计算资源加速机器学习训练
【8月更文第19天】随着大数据和人工智能技术的发展,机器学习模型的训练数据量和复杂度都在迅速增长。传统的单机训练方式已经无法满足日益增长的计算需求。云原生架构为高性能计算提供了新的可能性,通过利用分布式计算资源,可以在短时间内完成大规模数据集的训练任务。本文将探讨如何在云原生环境下搭建高性能计算平台,并展示如何使用 PyTorch 和 TensorFlow 这样的流行框架进行分布式训练。
360 2
|
关系型数据库 MySQL 数据库
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
397 6