【化神系列】 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;
    }
}
相关文章
|
存储 NoSQL 关系型数据库
Redis(六)set集合类型
set集合和list列表十分的相似,都可以存储多个字符串。但是list列表可以存储重复值,而set集合中不可重复。
5806 0
Redis(六)set集合类型
|
2月前
|
NoSQL Redis
Redis set数据类型命令使用及应用场景使用总结
Redis set数据类型命令使用及应用场景使用总结
29 1
|
3月前
|
NoSQL 定位技术 Redis
RedisTemplate.opsForGeo()用法简介并举例
RedisTemplate.opsForGeo()用法简介并举例
125 3
|
3月前
|
算法 NoSQL Redis
RedisTemplate.opsForHyperLogLog()用法简介并举例
RedisTemplate.opsForHyperLogLog()用法简介并举例
|
3月前
|
NoSQL Redis
RedisTemplate.opsForSet()用法简介并举例
RedisTemplate.opsForSet()用法简介并举例
208 2
|
3月前
|
NoSQL Redis
RedisTemplate.opsForHash()用法简介并举例
RedisTemplate.opsForHash()用法简介并举例
186 1
|
3月前
|
NoSQL Redis 容器
Redis大Key问题 - 标准、原因、查找
【6月更文挑战第13天】**大Key标准**在不同场景各异,一般string超1MB或容器超10k元素视为大;高并发场景中,string超10KB,容器超5k或整体10MB。**阿里云Redis**中,大Key可能表现为String值5MB,ZSET成员10k,或Hash总值100MB。**大Key影响**包括高读取成本、操作阻塞、存储压力不均。**产生原因**多源于业务设计、动态增长管理和程序错误。**查找大Key**可通过云服务的实时/离线统计,`redis-cli --bigkeys`或使用Redis RDB Tools分析RDB文件。注意,某些特定需求可能需额外工具。
56 1
|
4月前
|
机器学习/深度学习 存储 NoSQL
Redis -- set集合
Redis -- set集合
42 0
|
4月前
|
NoSQL Unix Redis
Redis - 五种数据类型与常用操作详解-1
Redis - 五种数据类型与常用操作详解-1
40 0
|
9月前
|
NoSQL Redis
Redis--set类型
Redis--set类型