参考:http://www.runoob.com/java/java-array.html
引言:今儿写一个报表,想要初始化一个list集合,发现要指定一个固定长度的集合居然还挺麻烦的,于是便有了这出…
1.数组的声明
String[] str;
String str[];不推荐该写法
2.数组的初始化
String[] str1 = new String[15]; //初始化长度为15的数组、初值为null
String[] str2 = {"aa","bb","cc"};
String[] str3 = new String[]{"aa","bb"};
String[] str4 = new String[15];
for(int i=0;i<str4.length;i++) {
str4[i] = i+"";
}
//多重数组
String[][] s = new String[2][2];
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");
3.数组的一些使用技巧
a、以下数组可以利用Arrays工具转化为String:
b、数组可以通过Arrays.asList()转化为List,但是int、float等基本类型除外、需要使用相应的包装类型:
Integer[] ints = new Integer[]{1,5,7,6,5};
List<Integer> list = Arrays.asList(ints);
c、还可以通过list来创建list:
List<Integer> list1 = Arrays.asList(ints);
List<Integer> list2 = new ArrayList<>(list);
d、可以通过Arrays.asList()搭桥,转化为set:
Integer[] ints = new Integer[]{1,5,7,6,5};
List<Integer> list = Arrays.asList(ints);
Set<Integer> set = new HashSet<>(list);
e、给数组赋初值的绝招:
Integer[] ints = new Integer[]{1,5,7,6,5};
Arrays.fill(ints, 13);
f、可通过数组初始化指定长度、指定初值的list:
Integer[] ints = new Integer[]{1,5,7,6,5};
Arrays.fill(ints, 13);
List<Integer> list = Arrays.asList(ints);
g、数组排序:
Integer[] ints = new Integer[]{1,5,7,6,5};
Arrays.sort(ints);
//给指定索引排序,此处开始索引为2,结束索引为5-1=4
Arrays.sort(ints,2,5);
h、数组的复制,需要指定新的长度:
Integer[] ints = new Integer[]{1,5,7,6,5};
Integer[] ins = Arrays.copyOf(ints, ints.length);
Integer[] in1 = Arrays.copyOf(ints, 3);
Integer[] in2 = Arrays.copyOf(ints, 10);
System.out.println(Arrays.toString(in1));
System.out.println(Arrays.toString(in2));
输出:
[1, 5, 7]
[1, 5, 7, 6, 5, null, null, null, null, null]
//复制指定长度的数组:
Integer[] ints = new Integer[]{1,5,7,6,5};
此处开始索引为0,结束索引为3-1=2
Integer[] in1 = Arrays.copyOfRange(ints, 0, 3);
System.out.println(Arrays.toString(in1));
输出:
[1, 5, 7]
i、比较两个数组
Integer[] ints = new Integer[]{1,5,7,6,5};
Integer[] in1 = Arrays.copyOfRange(ints, 0, 3);
Integer[] in2 = Arrays.copyOfRange(ints, 0, 4);
boolean b = Arrays.equals(in1, in2);
j、数组快速去重,但是需要重新转换回数组:
Integer[] ints = new Integer[]{1,5,7,6,5};
Set<Integer> set = new HashSet<>(Arrays.asList(ints));
System.out.println(set);