Java_数组, 懒得整理了 ---------------------> 未完, 待续
待续
public class TestArray {
public static void main(String[] args) {
String[] s1 = {"双儿", "建宁", "阿珂", "沐剑屏", "方怡", "曾柔", "苏荃"};
String[] s2 = new String[9];
displayArray(s1);
// 源数组或目标数组越界都会报错
System.arraycopy(s1, 0, s2, 1, s1.length);
displayArray(s2);
// 删除数组s1[1]元素
s1 = removeArrayElement(s1, 1);
displayArray(s1);
// 扩容数组s1
s1 = extendArray(s1, 10);
displayArray(s1);
}
// 删除的数组下标从0开始计数
public static String[] removeArrayElement(String[] str, int dex) {
System.arraycopy(str, dex+1, str, dex, str.length-dex-1);
str[str.length-1] = null;
return str;
}
// 数组扩容
public static String[] extendArray(String[] str, int i) {
String[] str_e = new String[str.length + i];
System.arraycopy(str, 0, str_e, 0, str.length-1);
return str_e;
}
// 数组遍历
public static void displayArray(String[] str) {
for(String tmp : str) {
System.out.print(tmp + " ");
}
System.out.println("\n#########################分隔符##############################");
}
}
/*
双儿 建宁 阿珂 沐剑屏 方怡 曾柔 苏荃
#########################分隔符##############################
null 双儿 建宁 阿珂 沐剑屏 方怡 曾柔 苏荃 null
#########################分隔符##############################
双儿 阿珂 沐剑屏 方怡 曾柔 苏荃 null
#########################分隔符##############################
双儿 阿珂 沐剑屏 方怡 曾柔 苏荃 null null null null null null null null null null null
#########################分隔符##############################
*/
JDK提供java.util.Arrays类, 包含了常用的数组操作, 方便日常开发.
Arrays类包含: 排序, 查找, 填充, 打印内容
Arrays.toString()方法是Arrays类的静态方法, 不是Object的toString()方法
import java.util.Arrays;
public class TestArray_1 {
public static void main(String[] args) {
int[] s1 = {1, 4, 2, 9, 13};
// 打印数组引用的值
System.out.println(s1);
// 打印数组元素
System.out.println(Arrays.toString(s1));
// 未排序, 不能用Arrays.binarySearch()查找
//System.out.println("该元素的索引: " + Arrays.binarySearch(s1, 4));
// 数组排序
// Arrays.toString()方法是Arrays类的静态方法, 不是Object的toString()方法
Arrays.sort(s1);
System.out.println(Arrays.toString(s1));
// 返回索引位置, 若未找到返回负数, 查找数组必须先经过排序
System.out.println("该元素的索引: " + Arrays.binarySearch(s1, 4));
}
}
// Comparable接口---------------------> 容器待解决
class Man implements Comparable {
int age;
int id;
String name;
public Man(int age, String name) {
super();
this.age = age;
this.name = name;
}
public String toString() {
return this.name;
}
public int compareTo(Object o) {
Man man = (Man) o;
if(this.age < man.age) {
return -1;
}
else if(this.age > man.age) {
return 1;
}
else
return 0;
}
}
/*
[I@71be98f5
[1, 4, 2, 9, 13]
[1, 2, 4, 9, 13]
该元素的索引: 2
*/
二维数组
import java.util.Arrays;
public class Test2DimensionArray {
public static void main(String[] args) {
// Java中多维数组的声明和初始化应该按从低维到高维的顺序进行
int[][] array_1 = new int[3][];
array_1[0] = new int[2];
array_1[1] = new int[4];
array_1[2] = new int[3];
//int a1[][] = new int[][4];
// 二维数组的动态初始
int[][] array_2 = new int[3][];
array_2[0] = new int[]{1, 2, 3};
array_2[1] = new int[]{3, 4, 5, 9};
array_2[2] = new int[]{3, 4};
// 二维数组的静态初始化
int[][] array_3 = {{1, 2, 3}, {2, 3}, {3, 9}};
System.out.println(Arrays.toString(array_2[0]));
System.out.println(Arrays.toString(array_2[1]));
System.out.println(Arrays.toString(array_2[2]));
System.out.println("###############分隔符##################");
for(int[] tmp : array_3) {
System.out.println(Arrays.toString(tmp));
}
}
}
/*
[1, 2, 3]
[3, 4, 5, 9]
[3, 4]
###############分隔符##################
[1, 2, 3]
[2, 3]
[3, 9]
*/
多维数组存储表格
import java.util.Arrays;
public class TestArrayTableData {
public static void main(String[] args) {
Object[] emp1 = {1001, "萧峰", 30, "丐帮帮主", "2018.8.8"};
Object[] emp2 = {1002, "段誉", 20, "段公子", "2018.3.9"};
Object[] emp3 = {1003, "虚竹", 25, "梦郎", "2018.4.5"};
Object[][] tableData = new Object[3][];
tableData[0] = emp1;
tableData[1] = emp2;
tableData[2] = emp3;
for(Object[] tmp : tableData) {
System.out.println(Arrays.toString(tmp));
}
}
}
/*
[1001, 萧峰, 30, 丐帮帮主, 2018.8.8]
[1002, 段誉, 20, 段公子, 2018.3.9]
[1003, 虚竹, 25, 梦郎, 2018.4.5]
*/