Java数组的运用详解

 更新时间:2021年8月9日 12:00  点击:1955

一,数组的含义:

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

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

二,数组的创建

一维数组

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);
}

总结

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

[!--infotagslink--]

相关文章

  • Java实现经典游戏复杂迷宫

    这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • java 运行报错has been compiled by a more recent version of the Java Runtime

    java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01
  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
  • Json格式详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成...2021-11-05
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 浅谈Java与C#的一些细微差别

    说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • 解决Java处理HTTP请求超时的问题

    这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • java 判断两个时间段是否重叠的案例

    这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 超简洁java实现双色球若干注随机号码生成(实例代码)

    这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • vue中的插槽详解

    这篇文章主要介绍了Vue中的插槽,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31