Arrays及Array
这两个类都包含了很多用来操作Java数组的静态函数,分别定义如下:
public final class Array extends Object
public class Arrays extends Object
二者区别:
Array | Arrays |
---|---|
Array类提供静态方法来动态创建和访问Java数组。 Array允许在获取或设置操作期间扩大转换(方法为使用现有的数组新建一个更大的数组),但如果发生缩小转换,则抛出IllegalArgumentException 。 |
该类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。 如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException |
先复习一下数组的基本知识:
int[] ints=new int[5] //此时虚拟机在在内存上申请了一段单位大小四个字节,长度为5的连续内存,并将元素初始化为0;
(数组可以先声明再初始化,一旦初始化后,数组的长度便不可更改)常用数组的默认值如下:
public static void main(String[] args) {int[] ints = new int[1];for (int i : ints) System.out.println(i);float[] floats = new float[1];for (float f : floats) System.out.println(f);char[] chars=new char[1];chars[0]=72;for(char c:chars) System.out.println(c);boolean[] booleans=new boolean[1];for(boolean b:booleans) System.out.println(b);String[] strings=new String[1];for(String s:strings) System.out.println(s);}
结果:
Array:
static Object newInstance(Class<?> componentType, int length) | 创建具有指定组件类型和长度的新数组 |
static Object get(Object array, int index) | 返回指定数组对象中的索引组件的值。 |
static int getInt(Object array, int index) | 返回指定数组对象中的索引组件的值,如 int |
static void set(Object array, int index, Object value) | 将指定数组对象的索引组件的值设置为指定的新值。 |
static void setBoolean(Object array, int index, boolean z) | 将指定数组对象的索引组件的值设置为指定的 boolean值。 |
代码示例:(其中用到反射知识,参考我的博文:https://blog.csdn.net/qq_42013035/article/details/103362162)
public static void main(String[] args) {int[] ints=new int[5];Arrays.fill(ints,3);//初始填充3System.out.println("length:"+ints.length);for(int i:ints) System.out.print(i+" ");int[] ints1= (int[]) Array.newInstance(ints.getClass().getComponentType(),10);//新建一个元素类型为int,长度为10的数组System.arraycopy(ints,0,ints1,0,ints.length);System.out.println("\nlength:"+ints1.length);for(int i:ints1) System.out.print(i+" ");System.out.println("\n"+Array.get(ints,3));}
结果:
Arrays:
Arrays是操作数组的工具类,它的功能相比Array更加强大(也可以说是对Array功能的丰富,二者皆有用武之地),在jdk1.2版本发布。
static <T> List<T> asList(T... a) | 返回由指定数组支持的固定大小的列表。 |
static boolean deepEquals(Object[] a1, Object[] a2) | 如果两个指定的数组彼此 深度相等 ,则返回 true |
static int deepHashCode(Object[] a) | 根据指定数组的“深度内容”返回哈希码 |
static void fill(int[] a, int val) | 将指定的int值分配给指定的int数组的每个元素。 |
static void fill(int[] a, int fromIndex, int toIndex, int val) | 将指定的int值分配给指定的int数组的指定范围的每个元素 |
static int hashCode(int[] a) | 根据指定数组的内容返回哈希码 |
static int binarySearch(int[] a, int key) (加一个范围参数) | 使用二叉搜索算法搜索指定值的位置,没有则返回负 |
static int[] copyOfRange(int[] original, int from, int to) | 将指定数组的指定范围复制到新数组中。 |
static void sort(int[] a) | 按照数字顺序排列指定的数组 |
static void sort(Object[] a) | 对指定对象升序排列的阵列,根据natural ordering的元素 |
static void sort(int[] a, int fromIndex, int toIndex) | 按升序排列数组的指定范围 |
static String toString(int[] a) | 返回指定数组的内容的字符串表示形式 |
static IntStream stream(int[] array, int startInclusive, int endExclusive) |
返回顺序IntStream与指定的数组作为源的指定范围 |
注:
1.sort()默认使用的是MergeSort(归并排序),可以自定义其他的算法,但它必须是稳定的
2.当时用binarySearch时,数组一定要是有序的,因为二叉树搜索算法用到了二分法
3.sort(Object[] a) 按照的是字符的自然顺序排列的
代码示例:
public static void main(String[] args) {int[] ints={2,4,3,1,9,6,5,4};System.out.println("inst length:"+ints.length);System.out.println(Arrays.toString(ints));int[] ints1=Arrays.copyOf(ints,10);//莫名感觉它比Array里的newInstance厉害哈哈哈System.out.println("ints1 length"+ints1.length);System.out.println(Arrays.toString(ints1));System.out.println("ints1's hashcode:"+Arrays.hashCode(ints1));Arrays.sort(ints);System.out.println("after sort by Arrays:");System.out.println(Arrays.toString(ints));System.out.println("binarySearch result is "+Arrays.binarySearch(ints,9));System.out.println(Arrays.toString(ints));/*引用类型数据数组*/;String[] strings={"hello","world","who","are","you"};System.out.println(Arrays.toString(strings));System.out.println("deep hashcode:"+Arrays.deepHashCode(strings));Arrays.sort(strings);System.out.println(Arrays.toString(strings));List list=Arrays.asList(1,1,2,2,3);//使用将数量较少的元素快速转换成对应的集合System.out.println(list.size());Iterator iterator=list.iterator();while (iterator.hasNext()) System.out.print(iterator.next().toString()+" ");}
结果:
Arrays及Array相关推荐
- arrays 和array的区别 blogbus
http://b0r0j0.blogbus.com/logs/1646758.html J2SE综合:对java.util的总结6 15.9 Arrays (数组) Java 2在java.util中 ...
- PostgreSQL处理jsonb中的arrays of array 类型
一.提出问题 在postgre数据库,遇到了数组内嵌套数组的jsonb存储格式,如下: SELECT * FROM public.keyword_trend 查询结果: 其中,history一栏[[& ...
- 更高效地刷OJ——Java中常用的排序方法,Array.sort(),Arrays.parallelSort(), Collections.sort()
对于几大传统的排序算法我在前面博客中已经介绍过了,如果有想要了解的同学可以去看这篇博客八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序但是我们在刷题过程中如果题目中没有对排 ...
- php recordarray,Array 数组 - [ php中文手册 ] - 在线原生手册 - php中文网
用户评论: [#1] florenxe [2015-10-07 18:53:45] //a nice little way to print leap years using array for ($ ...
- Java之Array(数组)说明
代码说明: 1 package array; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util ...
- java中Array和ArrayList区别
2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...
- Flatten Nested Arrays(展平嵌套数组)
这个题目是在一个公司现场面谈的时候的一个题目.虽然对这种找工作上来就做题目的现象比较反感. 但是大环境如此,也只能被蹂躏了. 中文描述 题目要求比较简单:[1,2,[3],[[4]],5,6] -&g ...
- How to Convert Array to ArrayList in Java?
2019独角兽企业重金招聘Python工程师标准>>> This article analyzes answers for a top-voted questions on Stac ...
- 二十四,Arrays和比较器
2019独角兽企业重金招聘Python工程师标准>>> 1.Arrays类定义 Arrays类是Java API中提供的类 ,与数组操作相关.可以使用此类对数组进行相关的操作.在ja ...
最新文章
- 程序员从初级到中级10个秘诀 【转载】
- jenkins再不同操作系统上的安装教程
- boost::hana::tuple_c用法的测试程序
- 基于IntelliJ IDEA和Ubuntu的Chisel开发环境搭建
- docker使用问题总结
- 手机有一个时钟的标志_手机桌面时钟有这几款就够了
- 99个wordpress经典插件
- maven库的查询和配置
- Mac系统MATLAB_R2018a软件CVX下载及安装
- laravel 使用队列进行微信模板消息的群发
- 一元运算符 + 表示正号 - 表示负号
- Java实现FTP下载文件到客户端(浏览器)
- 材料科学与工程毕业论文题目【313个】
- 其次线性方程组,行列式为0,一定有非0解.
- SQL Server数据库mdf文件中了勒索病毒BUNNY。扩展名变为BUNNY
- 基于单片机的环境监测系统设计(#0473)
- PHP使用phpCAS对接CAS单点登陆系统
- 计算机桌面怎么添加便签,桌面记事本,详细教您怎么在桌面添加便签
- AI神经网络-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
- python perl r_PHP Python Ruby Perl
热门文章
- java 雷达图_Android雷达图(蜘蛛网图),自定义view之雷达图,正五边雷达图,分数图...
- 北华航天工业学院计算机如何,北华航天工业学院的实力怎么样?如何评价这所学校?...
- Qt 使用阿里巴巴字体图标库 iconfont
- 双显示器扩展怎么设置上下扩展
- Vue搭建可视化界面
- CAD转PNG,怎样转换成高质量清晰的黑白图片
- 嵌入式系统开发笔记81:嵌入式系统的本质
- HOOK 几种实现方式区别
- U盘pe(理论大白菜、优启通、微PE都可以) 装ESXI方案 (非通用UltraISO重做启动U盘),省U盘
- “新产业50人论坛”之钱旭红院士:量子思维与创新发展