返回顶部
首页 > 资讯 > 后端开发 > Python >Java数组的运用详解
  • 650
分享到

Java数组的运用详解

2024-04-02 19:04:59 650人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一,数组的含义:二,数组的创建1,动态初始化2,静态初始化三,数组遍历四,Arrays.deepToString()与Arrays.toString()的区别五,Java中Arr

一,数组的含义:

一维数组:相同数据类型的元素的集合

二位数组:存放数组的数组,也就是说数组里存的还是数组的数据形式。

二,数组的创建

一维数组

1,动态初始化

数据类型[] 数组名 = new 数据类型[数组长度];

例:int[] a = new int[5];

2,静态初始化

数据类型[] 数组名 = {数组0,数组1,数组2,数组3,…};

例:int[] b = new int[]{1,2,3,4,5};

数据类型[] 数组名 = {数组0,数组1,数组2,数组3,…};

例:int[] c = {1,2,3,4,5}

二位数组

数据类型[][] 数组名 = {数组1,数组2,…};

例:int[][] a = {{3,5},{7,9},{1,2}};

在这里插入图片描述

三,数组遍历

一维数组遍历


int [] arr={1,2,3,4,5};
for(int a = 0; a < arr.length; a++){
     System.out.print(arr[a]);
 }

运行结果:

12345

Arrays工具类中toString静态方法遍历


 int [] arr={1,2,3,4,5};
 System.out.print(Arrays.toString(arr));

运行结果:

[1, 2, 3, 4, 5]

二维数组遍历


 int Arr[][]={{5,7,15},{8,4,11},{3,6,13}};
 for (int i = 0; i < Arr.length; i++) {
     for (int j = 0; j < Arr[i].length; j++) {
         System.out.print(Arr[i][j]+" ");
     }
 }

运行结果:

5 7 15 8 4 11 3 6 13

Arrays工具类中deepToString静态方法遍历


int b[][]={{5,7,15},{8,4,11},{3,6,13}};
System.out.println(Arrays.deepToString(b));

运行结果:

[[5, 7, 15], [8, 4, 11], [3, 6, 13]]

四,Arrays.deepToString()与Arrays.toString()的区别

Arrays.deepToString()主要用于数组中还有数组的情况,而Arrays.toString()则相反,对于Arrays.toString()而言,当数组中有数组时,不会打印出数组中的内容,只会以地址的形式打印出来。

例:


   int a[][]={{5,7,15},{8,4,11},{3,6,13}};
   System.out.println(Arrays.toString(a));
   int b[][]={{1,2,3},{8,4,11},{3,6,13}};
   System.out.println(Arrays.deepToString(b));

运行结果:

[[I@da2dbb, [I@176fe71, [I@fb509a]

[[1, 2, 3], [8, 4, 11], [3, 6, 13]]

五,Java中Arrays类的常用方法

Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。

Arrays.fill(); //填充数组


 int[] a = new int[5];//新建一个大小为5的数组
 Arrays.fill(a,4);//给所有值赋值4
 System.out.println(Arrays.toString(a));

 int[] b = new int[5];//新建一个大小为5的数组
 Arrays.fill(b, 2,4,1);//给第2位(0开始)到第4位(不包括)赋值6
 System.out.println(Arrays.toString(b));

运行结果:

[4, 4, 4, 4, 4]
[0, 0, 1, 1, 0]

Arrays.sort(); //数组排序

1,数字排序


 int[] a = new int[] { 4, 1, 3, -2, 10 };
 Arrays.sort(a);
 System.out.println(Arrays.toString(a));
 

运行结果:

[-2, 1, 3, 4, 10]

2,字符串排序,先大写后小写


 String[] a = new String[] { "a", "b", "C" };
 Arrays.sort(a);
 System.out.println(Arrays.toString(a));

 运行结果:

[C, a, b]

3,严格按字母表顺序排序,也就是忽略大小写排序 CASE_INSENSITIVE_ORDER


 String[] a = new String[] { "a", "b", "C" };
 Arrays.sort(a, String.CASE_INSENSITIVE_ORDER);
 System.out.println(Arrays.toString(a));

 运行结果:

[a, b, C]

4,反向排序, Collections.reverseOrder()


 String[] a = new String[] { "a", "b", "C" };
 Arrays.sort(a, Collections.reverseOrder());
 System.out.println(Arrays.toString(a));
 

运行结果:

[a, b, C]

5,忽略大小写反向排序 (先忽略大小写,再反向排序)


  String[] a = new String[] { "a", "B", "c","D" };
  Arrays.sort(a, String.CASE_INSENSITIVE_ORDER);
  Collections.reverse(Arrays.asList(a));
  System.out.println(Arrays.toString(a));
  

运行结果:

[D, c, B, a]

6,选择数组指定位置进行排序


int[] a = {3,2,1,8,6,5,4,7};
Arrays.sort(a,0,3);//给第0位(0开始)到第3位(不包括)排序
System.out.print(Arrays.toString(a));

 运行结果:

[1, 2, 3, 8, 6, 5, 4, 7]

Arrays.toString(); //将数组中的内容全部打印出来


int[] a = {3,2,1,5,4};
System.out.println(a);//直接将数组打印输出

String str = Arrays.toString(a); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.println(str);

运行结果:

[I@da2dbb
[3, 2, 1, 5, 4]

Arrays.equals(); //比较数组元素是否相等


int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1,arr2));
System.out.println(arr1.equals(arr2));

运行结果:

true
false

因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。

Arrays.copyOf();//复制数组


int[] a= {3, 7, 2, 1};
int[] b=Arrays.copyOf(arr6, 4);  //指定新数组的长度
int[] c=Arrays.copyOfRange(a, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)

System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));

运行结果:

[3, 7, 2, 1]
[7, 2]

数组中是否包含某一个值


String[] array={"aaa","bbb","ccc","DDD","eee"};
String a="aaa";
String b="fff";
if (Arrays.asList(array).contains(a)) {
    System.out.println("1");
}else {
    System.out.println("2");
}

if (Arrays.asList(array).contains(b)) {
    System.out.println("1");
}else {
    System.out.println("2");
}

运行结果:

1
2

其它方法,详情见JAVA jdk_api

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

六,数组去重

1,利用set的特性去重


int[] arr11 = {1,2,3,4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
Set<Integer> set2=new HashSet<Integer>();
for (int i = 0; i < arr11.length; i++) {
    set2.add(arr11[i]);
}
System.out.println(set2);
int[] arr12 = new int[set2.size()];
int j=0;
for (Integer i:set2) {
    arr12[j++]=i;
}
System.out.println(Arrays.toString(arr12));

运行结果:

[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2,用List集合实现


int[] str = {5, 6, 6, 6, 8, 8, 7,4};
List<Integer> list = new ArrayList<Integer>();
for (int i=0; i<str.length; i++) {
    if(!list.contains(str[i])) {
        list.add(str[i]);
    }
}
System.out.println("去除重复后的list集合"+list);

运行结果:

[5, 6, 8, 7, 4]

3,用hashSet或者TreeSet实现


Integer[] nums = { 5, 5, 6, 6, 6, 8, 8, 7, 11, 12, 12 };
HashSet hset = new HashSet(Arrays.asList(nums));
//TreeSet<Integer> hset = new TreeSet<Integer>(Arrays.asList(nums));
Iterator i = hset.iterator();
while(i.hasNext()){
 	System.out.print(i.next());
}

运行结果:

56781112

4,用List和set实现


int[] nums = { 5, 6, 6, 6, 8, 8, 7 };
List<Integer> numList = new ArrayList<Integer>();
for (int i : nums)
    numList.add(i);
Set<Integer> numSet = new HashSet<Integer>();
numSet.addAll(numList);
System.out.println(numSet);

运行结果:

[5, 6, 7, 8]

七,数组删除,增加元素

删除数组中其中一个元素


String [] str = {"Java", "c++", "PHP", "C#", "python"};//删除php
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
    list.add(str[i]);
}
list.remove(2); //list.remove("Php")
String[] newStr =  list.toArray(new String[1]); //返回一个包含所有对象的指定类型的数组
System.out.println(Arrays.toString(newStr));

运行结果:

[Java, C++, C#, Python]

在数组中增加一个元素


String [] str = {"Java", "C++", "Php", "C#", "Python"};//增加ruby
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
    list.add(str[i]);
}
list.add(2, "ruby");
String[] newStr =  list.toArray(new String[1]); //返回一个包含所有对象的指定类型的数组
System.out.println(Arrays.toString(newStr));

运行结果:

[Java, C++, ruby, Php, C#, Python]

八,数组与List相互转换

数组转 List ,使用 JDK 中 java.util.Arrays 工具类的 asList 方法


String[] strs = new String[] {"aaa", "bbb", "ccc"};
List<String> list = Arrays.asList(strs);
for (String s : list) {
    System.out.println(s);
}

List 转数组,使用 List 的toArray方法。无参toArray方法返回Object数组,传入初始化长度的数组对象,返回该对象数组


List<String> list2 = Arrays.asList("aaa", "bbb", "ccc");
String[] array = list2.toArray(new String[list2.size()]);
for (String s : array) {
    System.out.println(s);
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java数组的运用详解

本文链接: https://www.lsjlt.com/news/132092.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java数组的运用详解
    目录一,数组的含义:二,数组的创建1,动态初始化2,静态初始化三,数组遍历四,Arrays.deepToString()与Arrays.toString()的区别五,Java中Arr...
    99+
    2024-04-02
  • 【Java】数组详解
    文章目录 一、数组的基本认识1.1 数组的概念1.2数组的创建与初始化1.3 数组的使用 二、数组的类型 — 引用类型2.1 JVM 内存分布2.2 什么是引用类型2.3 基本类型变量与引...
    99+
    2023-09-05
    java 数组
  • Java中的数组——详解!
    Java中的数组——详解! 一、数组的概念与基本要素 1.概念 数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标...
    99+
    2023-09-14
    java 开发语言
  • java数组基础详解
    目录数组一. 数组概述二. 数组声明和创建三. 内存分析1.JAVA内存有:堆,栈,方法区····2.静态初始化:创建+赋值3.动态初始化:前面其实就是动态初始化,是分开写的。没有赋...
    99+
    2024-04-02
  • Java多维数组详解
    目录0、前言及思维导图0.1 怎么理解多维数组?0.2 思维导图:1、多维数组的动态初始化1.1 语法格式1.2 以例助解2、多维数组的引用2.1引用方式3、补充:获取数组长度总结0...
    99+
    2024-04-02
  • Java中数组的定义与使用详解
    目录数组的基本概念数组引用传递数组静态初始化二维数组总结数组的基本概念 如果说现在要求你定义100个整型变量,那么如果按照之前的做法,可能现在定义的的结构如下: int i1, ...
    99+
    2024-04-02
  • 详解Java的位运算
    目录位运算代码演示代码结果位运算的应用位运算 很久以前学习过位运算,但是很久不用,感觉都忘得差不多了。最近看了几处位运算的代码,发现都看不懂了,哈。也是时候回来补一补基础知识了。 程...
    99+
    2023-05-15
    Java位运算 Java运算
  • Java基础之数组详解
    目录前言二.创建数组三.数组的使用四.数组的遍历五.数组作为方法的参数六.数组相关方法Arrays前言 我们了解数组这个概念之前,我们先思考下面几个问题。 如果我们需要两个数据,那么...
    99+
    2024-04-02
  • Java中对象数组的使用方法详解
    在Java中,对象数组是一种特殊类型的数组,可以存储任意类型的对象。以下是关于Java对象数组的使用方法的详细解释:1. 声明对象数...
    99+
    2023-08-15
    Java
  • JAVA JVM运行时数据区详解
    目录一、前言二、运行时数据区整体概架构三、程序计数器四、虚拟机栈1、栈的特点2、栈帧的内部结构3、局部变量表4、操作数栈5、动态链接6、方法返回地址五、本地方法栈六、堆1、设置堆大小...
    99+
    2024-04-02
  • Java 数组内置函数toArray详解
    java.util.List中的toArray函数 java.util.List<E> @NotNull public abstract <T> T[]...
    99+
    2024-04-02
  • 详解Java中的运算符
    本篇文章为大家展示了详解Java中的运算符,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的运算符,分为四类:算数运算符、关系运算符、逻辑运算符、位运算符。算数运算符(9):+ - * / %...
    99+
    2023-05-31
    java 运算符 ava
  • Java ArrayList集合详解(Java动态数组)
    目录一、ArrayList集合的概述和基本使用1.概述2.基本使用二、ArrayList集合的详细介绍1.定义一个ArrayList集合2.ArrayList集合常用的方法3.将"类...
    99+
    2024-04-02
  • java基础-数组扩容详解
    目录数组与链表的比较:ArrayList:LinkedList:总结数组与链表的比较: 数组通过下标访问的话是O(1) 数组一旦声明 长度就是固定的 数组的...
    99+
    2024-04-02
  • JavaScript数组的使用详解
    目录一、数组的创建二、数组的元素和长度三、数组的遍历四、数组的常用方法一、数组的创建 第一种: var 数组名 = new Array();创建一个空数组 <!DOCTYPE ...
    99+
    2024-04-02
  • java方法与数组基础使用详解
    目录一、方法的使用1、方法的定义2、方法重载二、数组的定义和使用1、数组的基本概念(1)数组的创建(2)数组的初始化(3)数组的遍历2、数组是引用类型(JVM的内存分布)3、引用变量...
    99+
    2024-04-02
  • Java对象数组定义与用法详解
    Java对象数组是一种用于存储多个相同类型的对象的数据结构。它可以按照一定的顺序存储和访问对象,并且可以根据需要进行动态调整大小。要定义一个对象数组,可以使用以下语法:```ClassName[] arrayName = new Cla...
    99+
    2023-08-09
    Java
  • 详解Java数组的四种拷贝方式
    目录深拷贝与浅拷贝的区别1. for循环进行拷贝拷贝数值类型拷贝引用类型2. copyof / copyOfRange拷贝数值类型拷贝引用类型3. arraycopy拷贝数值类型拷贝...
    99+
    2024-04-02
  • Java实现差分数组的示例详解
    目录前言应用场景Leetcode题目实战题目描述思路代码前言 昨天(2022-06-07)在做leetcode每日一题的时候,第一次看到了这个超级简单但是很实用的算法---差分数组,...
    99+
    2024-04-02
  • java数组的初始化及操作详解
    Java数组的初始化及操作详解:数组的初始化是指在创建数组对象时为数组元素赋予初值。Java数组的初始化有以下几种方式:1. 静态初...
    99+
    2023-08-17
    Java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作