【化神系列】 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;
    }
}
相关文章
|
9月前
|
存储 程序员 C++
C++中map的使用方法
map是一种使用键值对的数据结构,它允许我们使用键来查找值。map中的键必须是唯一且有序的,而值可以重复并且没有特定的顺序。 map中的数据以树结构进行组织,其中每个节点都由一个键和一个值组成。根据键的大小,节点被插入到正确的位置以保持树的有序性。这使得在map中查找值非常高效,因为我们可以使用二分查找来快速定位值。
199 0
|
8月前
|
存储 C++ 容器
【C++: list的使用方法(总结)】
【C++: list的使用方法(总结)】
87 1
|
7月前
|
测试技术
[Eigen中文文档] Array类与元素操作
与Matrix类用于线性代数计算不同的是,Array类提供了通用目的数组。此外,Array类提供了一种执行按系数运算的简单方法,这可能没有线性代数意义,例如对每一个元素都加一个常数或按系数将两个数组相乘。
105 0
|
Java Scala 开发者
ArrayBuffer 的基本使用 | 学习笔记
快速学习 ArrayBuffer 的基本使用
462 0
|
Web App开发 JavaScript 前端开发
学习Array类型看这一篇就够了(Array类型特点,Array原型方法,浏览器sort底层实现,深浅拷贝)
学习Array类型看这一篇就够了(Array类型特点,Array原型方法,浏览器sort底层实现,深浅拷贝)
104 0
|
前端开发
前端学习案例6-创建数组arrayOf和Array.from
前端学习案例6-创建数组arrayOf和Array.from
61 0
前端学习案例6-创建数组arrayOf和Array.from
|
前端开发
前端学习案例6-创建数组arrayOf和Array.from
前端学习案例6-创建数组arrayOf和Array.from
57 0
前端学习案例6-创建数组arrayOf和Array.from
|
索引
forEach用法与map用法区别
forEach用法与map用法区别
148 0
|
JSON 数据格式
【jmespath】—2. 进阶 List and Slice Projections
【jmespath】—2. 进阶 List and Slice Projections
【jmespath】—2. 进阶 List and Slice Projections
|
前端开发
前端学习案例-类数组和Array.from
前端学习案例-类数组和Array.from
66 0