首页 > 编程语言 >JAVA 数据结构 - 数组

JAVA 数据结构 - 数组

时间:2024-07-20 17:18:44浏览次数:17  
标签:JAVA Arrays ArrayList sites int 数组 new 数据结构

一、固定数组Arrays

数组用来存储固定大小的同类型的元素;

1、声明,初始化,访问

int[] myIntArray;
double[] myDoubleArr;
String[] myStrArr;

int size = 10;
double[] myDoubleArr  = new double[size];
double[] myList = {1.9, 1.4, 2.3, 9.8};

for (int i = 0; i < myList.length; i++) {  //方式1 获取数组的长度;
    System.out.println(myList[i] + " ");
}

for (double element: myList) {   //方式2 For-Each的方式;
    System.out.println(myList[i] + " ");
}

2、数组排序

Arrays.sort(nums);  // 默认升序排序;

Arrays.sort(a, new Comparator<String>() { // 自定义排序算法;
    @Override
    public int compare(String o1, String o2) {
        return o1.length() - o2.length();
    }
});

3、数组拷贝

方法1 for 循环拷贝(深拷贝)

int [] source = {1, 2, 3, 4, 5, 6};
int [] destination = new int[6];

//迭代并将元素从源复制到目标
for (int i = 0; i < source.length; ++i) {
    destination[i] = source[i];
}

在这里,源和目标数组引用不同的对象(深拷贝)。因此,如果一个数组的元素被更改,另一个数组的相应元素也将保持不变。

方法2 Arrays.copy (浅拷贝)

String[] newStr = Arrays.copyOf(strArrays, 4); // 通过函数复制;

将一个字符串数组(strArrays)复制到一个新的长度为4的数组中。如果原数组长度小于4,则新数组的剩余位置将被填充为null。如果原数组长度大于等于4,则新数组将包含原数组的前4个元素。

浅拷贝——原始数组的一个元素的员工姓名的变化导致了拷贝数组的变化.

参考链接

Java复制数组的方法 https://www.cnblogs.com/baichunyu/p/12966475.html
Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRange https://c.biancheng.net/view/924.html
Java 中复制数组 https://www.itcodingman.com/java_array_copy/
Java 数组复制 https://www.cainiaojc.com/java/java-copy-arrays.html

4、Arrays类常见的函数

boolean isEqual = Arrays.equal(a, b); //比较函数

int idx = Arrays.binarySerch(num, key); //二分查找key,前提是数组必须有序;

5、其他类型和Arrays互转

// HashSet ==> Arrays;
HashSet<String> store = new HashSet<String>();
String[] result = new String[store.size()];
store.toArray(result); // 转换 collection.toArray()

//ArraysList ==> Arrays
ArrayList<Integer> storeNum = new ArrayList<>();
Integer[] strNumArray = new Integer[storeStr.size()];  // 必须是Integer类型;
storeStr.toArray(strNumArray);

二、动态数组 ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
Array 数组可以包含基本数据类型和引用数据类型,而 ArrayList 不能直接存储基本数据类型,而要存储其包装类对象。
image

ArrayList 继承了 AbstractList ,并实现了 List 接口。ArrayList 可以使用List的所有方法。
ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化
// E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
// objectName: 对象名。

1、定义/添加/删除元素

ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
sites.remove(3); // 删除第四个元素;

site.clear();  //清空元素;

2、遍历/修改元素

sites.set(2, "Wiki"); //修改idx=2位置的 值为Wiki;

//遍历元素
for (int i = 0; i < sites.size(); i++) {
    System.out.println(sites.get(i));       //   访问数据;
}

for (String i : sites) {  //for-each;
    System.out.println(i);
}

3、排序和反转数据

Collection.sort(sites);
Collections.sort(store, new Comparator<Integer>() {  //自定义排序算法
    @Override
    public int compare(Integer o1, Integer o2) {
        return 0;
    }
});

标签:JAVA,Arrays,ArrayList,sites,int,数组,new,数据结构
From: https://www.cnblogs.com/knowledgeable/p/18313387

相关文章

  • Java Swing Loading转圈的进度提示框
    JavaSwingLoading转圈的进度提示框具体只需要两个类AnimatedPanel.javaInfiniteProgressPanel.java 前因:我们开发的web应用,有个奇葩的需求,需要客户触发到客户端与第三方交互的地方加个Loading效果,已经脱离了web程序页面交互范围了,只是通过socket进行通信交互......
  • 嵌入式学习记录——C基础(数组与排序)
    数组与排序数组一维数组二维数组排序冒泡排序选择排序数组数组是由一个或者多个相同数据类型的数据组成的一个集合一维数组如果将数组看做一个坐标轴,一维数组则如同只有X坐标,每个数组中的元素内存地址都是连续的,当数据类型和首个元素a[0]确定时,后续a[i]依次递增......
  • Java中的枚举详解
    文章目录概述使用枚举枚举的实现枚举的性能枚举与常量枚举集合类枚举与泛型枚举与反射概述枚举在Java中是一种特殊的类,用来定义一组固定的常量。它在Java5中引入,提供了一种类型安全的方式来定义和使用常量集合。尽管enum看起来像是新的数据类型,但它实际上是一个受限......
  • JavaScript 基本语法
    JavaScript基本语法1、简介1.1、概念1.2、JavaScript的组成部分1.3、前端三大件2、编写及运行3、关键字(具有特殊作用的字)4、变量4.1、声明变量的关键字:var4.2、命名规范4.3、经典的变量命名法5、运算符5.1、赋值运算符5.2、加性运算符5.3、乘性运算5.4、一元运算符5.5......
  • JAVA流程控制
    Scanner对象Scanner类获取用户的输入基本语法​ Scannerscanner=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。has方法初始默认值为“True”,能正常......
  • JAVA实现简单的计算器(整数)
    计算器实现基本流程实现加减乘除四个独立的方法。编写输入数据的语句(Scanner方法)。用switch来选择一个计算方式。添加输入选择计算方式的语句。importjava.util.Scanner;publicclassdemo03_calc{publicstaticvoidmain(String[]args){System.out.p......
  • java学习进度
    7.14(1)三元运算符格式:关系表达式?表达式1:表达式2;运行顺序:判断关系表达式是否为true,是则运行表达式1,否则运行表达式2代码示例://比较大小importjava.util.Scanner;publicclassSanyuan{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Syste......
  • [LeetCode] 977. 有序数组的平方
    有序数组的平方简单给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]示例2:输入:nums=[-7......
  • 使用Java和Neo4j构建图数据库应用
    使用Java和Neo4j构建图数据库应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代应用开发中,图数据库在处理复杂的关系和网络数据时表现出色。Neo4j是一个流行的图数据库,它允许我们以图的形式存储和查询数据。本文将介绍如何使用Java和Neo4j构......
  • 使用Java和Consul实现服务配置管理
    使用Java和Consul实现服务配置管理大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代微服务架构中,服务配置管理是一个重要的环节。Consul是一个用于服务发现和配置管理的工具,它提供了一个灵活的方式来管理和存储配置数据。本文将展示如何使用Java......