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.

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