java数组及常见操作
如果需要存储大量的数据,例如如果需要读取100个数,那么就需要定义100个变量,显然重复写100次代码,是没有太大意义的。如何解决这个问题,Java语言提供了数组(array)的数据结构,是一个容器可以存储相同数据类型的元素,可以将100个数存储到数组中。
1数组的概念
同一种类型数据的集合。其实数组就是一个容器。运算的时候有很多数据参与运算,那么首先需要做的是什么.不是如何运算而是如何保存这些数据以便于后期的运算,那么数组就是一种用于存储数据的方式,能存数据的地方我们称之为容器,容器里装的东西就是数组的元素, 数组可以装任意类型的数据,虽然可以装任意类型的数据,但是定义好的数组只能装一种元素, 也就是数组一旦定义,那么里边存储的数据类型也就确定了。
2 数组的好处
存数据和不存数据有什么区别吗?数组的最大好处就是能都给存储进来的元素自动进行编号. 注意编号是从0开始。方便操作这些数据。
数组是一种非常快的数据结构,如果你已经知道元素的长度,那么就应该使用数组而非ArrayList等数据结构。
例如 学生的编号,使用学号就可以找到对应的学生。
数组常见操作
- 声明数组;
- 初始化数组;
- 查看数组长度;
- 遍历数组;
- int数组转成string数组;
- 从array中创建arraylist;
- 数组中是否包含某一个值;
- 将数组转成set集合;
- 将数组转成list集合;
- Arrays.fill()填充数组;
- 数组排序;
- 复制数组;
- 比较两个数组;
- 去重复;
- 查询数组中的最大值和最小值;
package MyTest01; import java.util.*; public class ArrayTest02 { public static void main(String[] args) { //声明数组 String [] arr; int arr1[]; //初始化数组 int arr2[]=new int[]{1,2,3,4,5}; String[] array1={"马超","马云","关羽","刘备","张飞"}; String[] array2=new String[]{"黄渤","张艺兴","孙红雷","小猪","牙哥","黄磊"}; String[] array=new String[5]; //查看数组的长度 int length=array1.length; System.out.println("length: "+array1.length); //输出数组 // System.out.println(array1); //结果:[Ljava.lang.String;@32f22097 System.out.println("arr2: "+Arrays.toString(arr2)); //遍历数组 for (int i = 0; i < array1.length; i++) { // System.out.println(array1[i]); } //int数组转成string数组 int[] array3={1,2,3,4,5,6,7,8,9,0}; String arrStrings=Arrays.toString(array3); // System.out.println(arrStrings); //从array中创建arraylist ArrayList<String> arrayList=new ArrayList<String>(Arrays.asList(array1)); System.out.println(arrayList); //数组中是否包含某一个值 String a="马超"; if (Arrays.asList(array1).contains(a)) { System.out.println("马超在这里"); }
Integer[] a=new Integer[5];
List lst=Arrays.asList(a);
System.out.println(lst.size());
for(byte i=0;i<5;i++) {
a[i]=(int) i;
}
if (lst.contains(8989)) {
System.out.println("yes");
}
//将数组转成set集合 Set<String> set=new HashSet<String>(Arrays.asList(array2)); System.out.println(set); //将数组转成list集合 List<String> list=new ArrayList<String>(); for (int i = 0; i < array2.length; i++) { list.add(array2[i]); } String[] arrStrings2={"1","2","3"}; List<String > list2=java.util.Arrays.asList(arrStrings2); System.out.println(list2); //Arrays.fill()填充数组 int[] arr3=new int[5]; Arrays.fill(arr3, 10); //将数组全部填充10 for (int i = 0; i < arr3.length; i++) { System.out.println(arr3[i]); } //数组排序 int[] arr4 = {3, 7, 2, 1, 9}; Arrays.sort(arr4); for (int i = 0; i < arr4.length; i++) { System.out.println(arr4[i]); } int[] arr5 = {3, 7, 2, 1, 9,3,45,7,8,8,3,2,65,34,5}; Arrays.sort(arr5, 1, 4); //从第几个到第几个之间的进行排序 for (int i = 0; i < arr5.length; i++) { System.out.println(arr5[i]); } //复制数组 int[] arr6 = {3, 7, 2, 1}; int[] arr7=Arrays.copyOf(arr6, 10); //指定新数组的长度 int[] arr8=Arrays.copyOfRange(arr6, 1, 3); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素) for (int i = 0; i < arr8.length; i++) { System.out.println(arr8[i]); } //比较两个数组 int[] arr9 = {1, 2, 3, 4,5,6,7,8,9,0}; boolean arr10=Arrays.equals(arr6, arr9); System.out.println(arr10); //去重复 //利用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)); } } package MyTest01; public class ArrayTest03 { public static void main(String[] args) { int[] arr11 = {10, 2, 3, 4,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3}; //计算最大值 int max = arr11[0]; for (int i = 1; i < arr11.length; i++) { if (arr11[i] > max) { max = arr11[i]; } } System.out.println("Max is " + max); //计算最小值 int min = arr11[0]; for (int i = 0; i < arr11.length; i++) { if (arr11[i]<min) { min = arr11[i]; } } System.out.println("Min is " + min); } }