• Java_数组


    数组

    静态初始化: 

    int[] array = {1,2,3,4,5};

    动态初始化: 

    int[] array = new int[10];

    后续可根据需要为数组元素赋值

    注: 动态初始化中包含默认初始化  即数组中的元素在被创建时已被赋初始值

    注: 数组的长度在创建时就已确定且不可变

    Arrays类

    常用方法返回类型说明
    toString(array)String将数组array转换为字符串
    sort(array)void对数组array进行升序排列
    fill(array, value)void将数组array中的所有元素替换为value
    equals(array1, array2)boolean判断数组array1与数组array2是否相等
    copyOf(array, length)同参数array将数组array复制为一个长length的新数组
    binarySearch(array, value)int查询数组array中与value相等的元素的下标

    注: 排序算法是由Vladimir Yaroslavskiy 丶Jon Bentley和Joshua Bloch提供的双轴快速排序

    稀疏数组

    对于数组中存在大量重复元素时  使用稀疏数组存储数据可大大减少资源开销

    另外  对于稀疏数组的说明均写在注释中  不再赘述

    普通二维数组

    1. //普通二维数组
    2. int[][] normalArray = new int[5][5];
    3. normalArray[1][1] = 1;
    4. normalArray[1][3] = 1;
    5. //输出普通二维数组
    6. System.out.println("=====输出普通二维数组=====");
    7. for (int[] ints : normalArray){
    8. for (int i : ints) {
    9. System.out.print(i + "\t");
    10. }
    11. System.out.println();
    12. }

    稀疏数组

    稀疏数组三列分别代表: x坐标  y坐标  元素的值

    1. //稀疏数组
    2. int count = 0; //统计不为零的元素的个数
    3. for (int[] ints : normalArray){
    4. for (int i : ints) {
    5. if (i != 0) count++;
    6. }
    7. }
    8. //根据不为零的元素的个数创建稀疏数组
    9. //三列分别为 x坐标 y坐标 元素的值
    10. int[][] sparseArray = new int[count + 1][3];
    11. //为稀疏数组首行赋值
    12. sparseArray[0][0] = normalArray.length;
    13. sparseArray[0][1] = normalArray[0].length;
    14. sparseArray[0][2] = count;
    15. //为稀疏数组赋值
    16. int row = 0;
    17. for (int i = 0; i < normalArray.length; i++){
    18. for (int j = 0; j < normalArray[i].length; j++) {
    19. if (normalArray[i][j] != 0) {
    20. row++;
    21. sparseArray[row][0] = i;
    22. sparseArray[row][1] = j;
    23. sparseArray[row][2] = normalArray[i][j];
    24. }
    25. }
    26. }
    27. //输出稀疏数组
    28. System.out.println("=====输出稀疏数组=====");
    29. for (int[] ints : sparseArray){
    30. for (int i : ints) {
    31. System.out.print(i + "\t");
    32. }
    33. System.out.println();
    34. }

     

    还原稀疏数组

    1. //还原稀疏数组
    2. int[][] restoreArray = new int[normalArray.length][normalArray[0].length];
    3. //因稀疏数组存在首行 故其实际存储不为零的元素的信息从第一行开始 故 i = 1
    4. for (int i = 1; i < sparseArray.length; i++){
    5. //sparseArray[i][0]表示x坐标 即行
    6. //sparseArray[i][1]表示y坐标 即列
    7. //sparseArray[i][2]表示元素的值
    8. restoreArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
    9. }
    10. //输出还原稀疏数组
    11. System.out.println("=====输出还原稀疏数组=====");
    12. for (int[] ints : normalArray){
    13. for (int i : ints) {
    14. System.out.print(i + "\t");
    15. }
    16. System.out.println();
    17. }

    完整代码

    1. public class TEST {
    2. public static void main(String[] args) {
    3. //普通二维数组
    4. int[][] normalArray = new int[5][5];
    5. normalArray[1][1] = 1;
    6. normalArray[1][3] = 1;
    7. //输出普通二维数组
    8. System.out.println("=====输出普通二维数组=====");
    9. for (int[] ints : normalArray){
    10. for (int i : ints) {
    11. System.out.print(i + "\t");
    12. }
    13. System.out.println();
    14. }
    15. //稀疏数组
    16. int count = 0; //统计不为零的元素的个数
    17. for (int[] ints : normalArray){
    18. for (int i : ints) {
    19. if (i != 0) count++;
    20. }
    21. }
    22. //根据不为零的元素的个数创建稀疏数组
    23. //三列分别为 x坐标 y坐标 元素的值
    24. int[][] sparseArray = new int[count + 1][3];
    25. //为稀疏数组首行赋值
    26. sparseArray[0][0] = normalArray.length;
    27. sparseArray[0][1] = normalArray[0].length;
    28. sparseArray[0][2] = count;
    29. //为稀疏数组赋值
    30. int row = 0;
    31. for (int i = 0; i < normalArray.length; i++){
    32. for (int j = 0; j < normalArray[i].length; j++) {
    33. if (normalArray[i][j] != 0) {
    34. row++;
    35. sparseArray[row][0] = i;
    36. sparseArray[row][1] = j;
    37. sparseArray[row][2] = normalArray[i][j];
    38. }
    39. }
    40. }
    41. //输出稀疏数组
    42. System.out.println("=====输出稀疏数组=====");
    43. for (int[] ints : sparseArray){
    44. for (int i : ints) {
    45. System.out.print(i + "\t");
    46. }
    47. System.out.println();
    48. }
    49. //还原稀疏数组
    50. int[][] restoreArray = new int[normalArray.length][normalArray[0].length];
    51. //因稀疏数组存在首行 故其实际存储不为零的元素的信息从第一行开始 故 i = 1
    52. for (int i = 1; i < sparseArray.length; i++){
    53. //sparseArray[i][0]表示x坐标 即行
    54. //sparseArray[i][1]表示y坐标 即列
    55. //sparseArray[i][2]表示元素的值
    56. restoreArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
    57. }
    58. //输出还原稀疏数组
    59. System.out.println("=====输出还原稀疏数组=====");
    60. for (int[] ints : normalArray){
    61. for (int i : ints) {
    62. System.out.print(i + "\t");
    63. }
    64. System.out.println();
    65. }
    66. }
    67. }

  • 相关阅读:
    numpy对数组进行过滤并获取下标
    Canvas字体高度计算与PDF高度如何统一
    用瀑布线分析伦敦银今日走势
    软考高级+系统架构设计师教程+第二版新版+电子版pdf
    『Java安全』SnakeYAML反序列化利用基础
    Android网络请求(终) 网络请求框架Retrofit
    微信小程序毕业设计_论文校园活动报名管理系统+后台管理_项目源代码
    sublime
    YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.77】引入百度最新提出RT-DETR模型中AIFI模块
    备战金九银十:Android 高级架构师的学习路线及面试题分享
  • 原文地址:https://blog.csdn.net/Mudrock__/article/details/126163176