二维数组定义
import org.junit.Test;
public class Array_2 {
@Test
public void method4() {
//二维数组的遍历
int[][] arr={{0,1,2},{3,4,5,6},{7,8,9}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
int value =arr[i][j];
System.out.print(value);
}
System.out.println();
}
/*
012
3456
789*/
}
@Test
public void method3() {
// 第3种定义方式
int[][] arr={{0,1,2},{3,4,5,6},{7,8,9}};
for (int i = 0; i < arr.length; i++) {
int[] temp = arr[i];
for (int j = 0; j < temp.length; j++) {
int value = temp[j];
System.out.print(value);
}
System.out.println();
}
}
@Test
public void method2() {
// 2维数组第2种初始化!
int[][] arr=new int[3][2];
System.out.println(arr.length);//2维数组中的1维数组的个数! 3
System.out.println(arr[0].length);//2维数组中下标为0的1维数组的长度! 2
}
@Test
public void method1() {
// int[] a1=new int[3];下面是第1种定义方式,指定2维和1维的大小
int[][] arr=new int[3][2];//3个1维数组,每个大1维数组中还有个小1维数组,当中有2个int元素
System.out.println(arr);//[[I@1615a1f
System.out.println(arr[0]);//[I@a23d38
System.out.println(arr[0][0]);//0 因为定义int[i][j],所以初始值是0
// 下面是第2种定义方法,仅明确有3个1维数组,但每个1维中的数据并未初始化
int[][] arr2=new int[3][];//3个1维数组,每个1维数组长度不确定
System.out.println(arr2);//[[I@63ae08
System.out.println(arr2[0]);//null,每个1维数组对象:默认初始化为null
// System.out.println(arr2[0][0]);//NullPointerException
}
}
数组转集合
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class ArraysDemo {
@Test
public void method7() {
//集合转数组,注意size()
// java.util 接口 Collection<E>的方法:
// <T> T[] toArray(T[] a)返回包含此 collection 中所有元素的数组;
// 返回数组的运行时类型与指定数组的运行时类型相同
List<String> list=new ArrayList<String>();
list.add("香菱");
list.add("鸳鸯");
list.add("袭人");
String[] str=list.toArray(new String[2]);//这个自动扩容
System.out.println(str);//[Ljava.lang.String;@91fa78
System.out.println(str.length);//自动扩容,本来是2,现在是3
System.out.println(Arrays.toString(str));//[香菱, 鸳鸯, 袭人]
String[] str3=list.toArray(new String[list.size()]);//建议用这个,大小恰好!
System.out.println(Arrays.toString(str3));//[香菱, 鸳鸯, 袭人]
String[] str5=list.toArray(new String[5]);//多的空位会自动填充null
System.out.println(Arrays.toString(str5));//[香菱, 鸳鸯, 袭人, null, null]
}
@Test
public void method6() {
// 注意Integer[]与method5,int[]进行区分
Integer[] arr1={3,1,4,5,8};
List<Integer> list=Arrays.asList(arr1);
System.out.println(list);//[3, 1, 4, 5, 8]
System.out.println(list.size()); //5
}
@Test
public void method5() {
// 强烈注意!!!基本数组类型的数组,会作为一个整体存入到List
int[] arr={3,1,4,5,8};
// List list=Arrays.asList(arr1);
List<int[]> list=Arrays.asList(arr);
System.out.println(list);//[[I@1d22104]
System.out.println(list.size());//1个元素,该元素是一个数组地址
}
@Test
public void method4() {
//用新办法查找数组中的元素,将数组转成List集合,使用集合的方法
//注意,这样的集合只支持查询,不支持增删改
String[] str={"林黛玉","薛宝钗","史湘云","妙玉"};//注意数组长度不可变
List<String> list=Arrays.asList(str);
System.out.println(list.contains("妙玉"));//true
System.out.println(list.contains("晴雯"));//false
System.out.println(list);//[林黛玉, 薛宝钗, 史湘云, 妙玉]
// list.add("袭人");//UnsupportedOperationException();
// list.remove(0);//UnsupportedOperationException();
// list.clear();//UnsupportedOperationException();
}
@Test
public void method3() {
// 用老办法查找数组中的元素,遍历!还是自己写的!
String[] str={"林黛玉","薛宝钗","史湘云","妙玉","晴雯"};
boolean result=myContains(str,"晴雯");
System.out.println(result);//true
result=myContains(str,"宝玉");
System.out.println(result);//false
}
public boolean myContains(String[] str, String key) {
// 遍历查找元素是否存在!
for (int i = 0; i < str.length; i++) {
if (str[i].equals(key)) {
return true;
}
}
//
return false;
}
public void method2() {
/* public <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表。
(千万注意:对返回列表的更改会“直接写”到数组。)
此方法同 Collection.toArray() 一起,充当了
基于数组的 API 与基于 collection 的 API 之间的桥梁。*/
}
@Test
public void method1() {
// Arrays.toString(arr1)
int[] arr1={3,2,5,7,8};
System.out.println(arr1.toString());
//[I@113b44d [代表是数组 I代表是int类型 @后面接的是地址
System.out.println(Arrays.binarySearch(arr1, 3));
//0 工具类的二分查找方法, 返回第2个参数在第1个参数中的位置(从0开始算)
System.out.println(Arrays.toString(arr1));
//[3, 2, 5, 7, 8] 工具类的方法,将数组成员用逗号+空格相连,并用中括号包裹起来
String str=myToString(arr1);
System.out.println(str);//[3,2,5,7,8]
}
//自定义将数组成员相连
// 数组toString的经典实现!
public String myToString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
//下面是健壮性判断
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {//中间省略条件判断,提高效率!
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(",");
}
}
}