目錄
1.聲明和打印數組
import java.util.Arrays;
public class 數組 {
public static void main(String[] args){
// int[] one = new int[] {1,2,3};
int[] one = {1,2,3};
// int[] one = new int[3];
// for(int i = 0; i<one.length; i++) {
// one[i] = i;
// }
//輸出數組,只是地址
System.out.println(one);
//輸出數組,換行
for(int element:one){
System.out.println(element);
}
//輸出數組,不換行
for(int element:one){
System.out.print(element);
}
System.out.print("\n");
//輸出數組對應的字符換
String one_s = Arrays.toString(one);
System.out.println(one_s);
// int[][] two = new int[][] {{4,5,6},{7,8,9}};
// int[][] two = {{4,5,6},{7,8,9}};
int[][] two = new int[2][3];
for(int i = 0; i<two.length; i++) {
for(int j = 0; j<two[0].length; j++) {
if(i == 0){
two[i][j] = i+j+4;
}
else{
two[i][j] = i+j+6;
}
}
}
//輸出數組,只是地址
System.out.println(one);
//輸出數組,換行
for(int[] element:two){
for(int element1: element) {
System.out.println(element1);
}
}
//輸出數組,不換行
for(int[] element:two){
for(int element1: element) {
System.out.print(element1);
}
}
System.out.print("\n");
//輸出數組對應的字符換
String two_s = Arrays.toString(two);
System.out.println(two_s);//[[I@7c75222b, [I@4c203ea1]
String two_s0 = Arrays.toString(two[0]);
String two_s1 = Arrays.toString(two[0]);
System.out.println(two_s0);//[4, 5, 6]
System.out.println(two_s0+two_s1);//[4, 5, 6][4, 5, 6]
String[] bArray = {"a","b","c", "d", "e"};
String[] cArray = new String[]{"a","b","c","d","e"};
String[] aArray = new String[5];
for(int i = 0; i < aArray.length; i++){
aArray[i] = bArray[i];
}
//輸出數組,不換行
for(String element:aArray){
System.out.print(element);//abcde
}
System.out.print("\n");
}
}
2.將數組轉化爲集合
String[] stringArray = { "a", "b", "c", "d", "e" };
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
System.out.println(arrayList); // [a, b, c, d, e]
Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
System.out.println(set); //[d, e, b, c, a]
3.檢查數組是否包含某一個值、對應的索引
String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);// true
public static void main(String[] args){
int[] a= {1,2,3};
int x;
x= Arrays.binarySearch(a, 2);
System.out.println("數組a爲:");
System.out.println(Arrays.toString(a));
System.out.println("數字x在數組中的索引(下標)爲:"+x);//數字x在數組中的索引(下標)爲:1
}
4.常用數組拷貝
//直接賦值
String[] a1 = {"a1", "a2"};
String[] a2 = a1;
a1[0] = "b1"; //更改a1數組中元素的值
System.out.println(Arrays.toString(a1)); //[b1, a2]
System.out.println(Arrays.toString(a2)); //[b1, a2]
//克隆 相比 new 更有效率。根據已知的對象,做克隆。
String[] a1 = {"a1", "a2"};
String[] a2 = a1.clone();
a1[0] = "b1"; //更改a1數組中元素的值
System.out.println(Arrays.toString(a1)); //[b1, a2]
System.out.println(Arrays.toString(a2)); //[a1, a2]
//系統級別的native原生方法,效率高。
//參數含義是:(原數組, 原數組的開始位置, 目標數組, 目標數組的開始位置, 拷貝個數)
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = new int[10];
System.arraycopy(a1, 1, a2, 3, 3);
System.out.println(Arrays.toString(a1)); // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)); // [0, 0, 0, 2, 3, 4, 0, 0, 0, 0]
//Arrays.copyOf
//參數含義,(原數組,拷貝的個數)。
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = Arrays.copyOf(a1, 3);
System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)) // [1, 2, 3]
//Arrays.copyOfRange
//Arrays.copyOfRange底層其實也是用的 System.arraycopy,只不過封裝了一個方法.
//參數含義:(原數組,開始位置,拷貝的個數)。
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = Arrays.copyOfRange(a1, 0, 1);
System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)) // [1]
5.數組排序
//public static void sort(doule a[])
//public static void sort(doule a[],int start,int end);
//第一種,將數組按升序全排序
//第二種從索引爲start到索引爲end-1的位置,升序排序
void test_arrayOfRange()
{
int []a = {55,33,44,22,11};
int []b = Arrays.copyOfRange(a, 1, 4);
Arrays.sort(a, 1, 4);
Arrays.sort(b);
System.out.println("排序後b數組爲:");
for(int i:b)
{
System.out.printf("%d ",i);//22 33 44
}
System.out.println("\n排序後a數組爲:");
for(int i:a)
{
System.out.printf("%d ",i);//55 22 33 44 11
}
System.out.println();
}
package com.itheimajavase;
import java.util.Arrays;
import java.util.Comparator;
public class Day01 {
public static void main(String[] args) {
Integer[] arr = {4, 6, 3, 9, 1, 5, 8};
Mycomparator c = new Mycomparator(); // 實例化一個Comparator對象
Arrays.sort(arr, c);
for(Integer ele : arr) {
System.out.print(ele +" ");
}
}
// 運行後是從大到小排好序的
}
class Mycomparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
if(o1 > o2) // 默認是o1 < o2時返回-1, 一下同理
return -1;
if(o1 < o2)
return 1;
return 0;
}
}
6.