【化神系列】 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;
    }
}
相关文章
|
8月前
|
设计模式
ES6中新增Array.from()函数的用法详解
ES6中新增Array.from()函数的用法详解
80 1
|
存储 程序员 C++
C++中map的使用方法
map是一种使用键值对的数据结构,它允许我们使用键来查找值。map中的键必须是唯一且有序的,而值可以重复并且没有特定的顺序。 map中的数据以树结构进行组织,其中每个节点都由一个键和一个值组成。根据键的大小,节点被插入到正确的位置以保持树的有序性。这使得在map中查找值非常高效,因为我们可以使用二分查找来快速定位值。
298 0
|
5月前
|
JavaScript 前端开发
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
这篇文章介绍了JavaScript中的数组、Date对象、Math对象以及包装类(String、Number、Boolean),并详细讲解了数组的创建、方法(如forEach、push、pop、unshift、slice、splice)和遍历操作,以及工厂方法创建对象和原型对象的概念。
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
|
存储 C++ 容器
【C++: list的使用方法(总结)】
【C++: list的使用方法(总结)】
124 1
|
8月前
|
存储 索引 Python
多数pythoneer只知有列表list却不知道python也有array数组
多数pythoneer只知有列表list却不知道python也有array数组
75 0
|
前端开发
前端学习案例6-创建数组arrayOf和Array.from
前端学习案例6-创建数组arrayOf和Array.from
103 0
前端学习案例6-创建数组arrayOf和Array.from
|
前端开发
前端学习案例6-创建数组arrayOf和Array.from
前端学习案例6-创建数组arrayOf和Array.from
77 0
前端学习案例6-创建数组arrayOf和Array.from
|
存储 算法 编译器
【C++】vector的基本使用
【C++】vector的基本使用
|
JavaScript
js:Map的基本用法示例
js:Map的基本用法示例
322 0
|
存储 JavaScript 前端开发
JS Array(数组)简单入门
数组是什么? 数组通常被描述为“像列表一样的对象”; 简单来说,数组是一个包含了多个值的对象。数组对象可以存储在变量中,并且能用和其他任何类型的值完全相同的方式处理,区别在于我们可以单独访问列表中的每个值,并使用列表执行一些有用和高效的操作,如循环 - 它对数组中的每个元素都执行相同的操作。 创建数组
110 0