Java數組常用方法

目錄

1.聲明和打印數組

2.將數組轉化爲集合

3.檢查數組是否包含某一個值、對應的索引

4.常用數組拷貝

5.數組排序

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章