美文网首页
java 数组实例练习

java 数组实例练习

作者: 月圆星繁 | 来源:发表于2021-02-03 23:40 被阅读0次

路漫漫其修远兮,吾将上下而求索。

package com.mgk.array;

import java.util.*;

public class ArrayOptions {

    public static void main(String[] args) {
        int[] array = {2,5,-2,6,-3,8,0,-7,-9,4};
        Arrays.sort(array);
        printArray("数组排序结果为:", array);
        int index = Arrays.binarySearch(array, 7);
        int index2 = Arrays.binarySearch(array, 2);
        //binarySearch 用二分查找算法在给定数组中搜索给定值的对象,数组在调用前必须排序好的,如果查找值包含
        //在数组中,则返回搜索键的索引(排序后的索引位置),否则返回(-(插入点)-1),即(-()-1)
        // 插入点是在排序数组中的插入位置,不是下标位置
        System.out.println("元素 10 在第" + index + "个位置"); // -10
        System.out.println("元素 2 在第" + index2 + "个位置"); // 5

        // 数组的长度
        printLength(array); // 10

        String[][] data = new String[2][5];
        System.out.println("data的长度:" + data.length);
        System.out.println("二维数组的长度:" + data[0].length);

        // 使用Collections.reverse(ArrayList) 将数组进行反转
        reverseArray();

        // 使用for翻转数组
        reverse();

        // 使用Collections.max() 获取最大value
        getArrayMax();

        // 使用Collections.min() 获取数组最小值
        getArrayMin();

        // 数组合并
        arrayMerge();

        // 数组填充
        arrayFill();

        // 查找数组中重复元素
        int[] arr = {2,4,5,6,3,2,4,6,7,8,9};
        findDupInArray(arr);

        //删除数组
        delArrayValue();

        // 数组差集
        arrayDiff();

        // 数组交集
        arrayIns();

        // 在数组中查找指定元素
        searchElement();

        // 判断数组是否相等
        equalsArray();
    }

    /**
     * 打印数组
     * @param message
     * @param array
     */
    private static void printArray(String message, int array[]) {
        System.out.println((message + ":[lenght:" + array.length + "]"));
        for(int i = 0; i < array.length; i++) {
            if(i !=0 ) {
                System.out.print(",");
            }
            System.out.print(array[i]);
        }
        System.out.println();
    }

    /**
     * length数组的长度
     * @param array
     */
    private static void printLength(int[] array) {
        System.out.println("数组的长度是:" + array.length);
    }

    /**
     * 使用Collections.reverse(ArrayList) 反转数组
     */
    private static void reverseArray() {
        ArrayList<String> arrayList = new ArrayList<String>();
        arrayList.add("A");
        arrayList.add("R");
        arrayList.add("R");
        arrayList.add("A");
        arrayList.add("Y");
        System.out.println("反转前排序:" + arrayList); // 反转前排序:[A, R, R, A, Y]
        Collections.reverse(arrayList);
        System.out.println("反转后排序:" + arrayList); //反转后排序:[Y, A, R, R, A]
    }

    /**
     * 数组翻转
     */
    private static void reverse() {
        int[] arr = {1,3,5,7,-3,-2,-1};
        int[] arr1 = new int[arr.length];
        System.out.println("翻转后的数组:");
        for(int i=0; i<arr.length; i++) {
            arr1[i] = arr[arr.length-1-i];
            System.out.print(arr1[i] + " "); //-1 -2 -3 7 5 3 1
        }
    }

    /**
     * 获取最大值
     */
    private static void getArrayMax() {
        Integer[] numbers = { 8, 2, 7, 1, 4, 9, 5};
        int max = Collections.max(Arrays.asList(numbers)); // arrays.asList() 将数组转为集合
        System.out.println("使用Collections.max() :");
        System.out.println("最大值:" + max);
    }

    /**
     * 获取数组最小值
     */
    private static void getArrayMin() {
        Integer[] num = {3,44,6,32,61,1,34};
        int min = Collections.min(Arrays.asList(num));
        System.out.println("最小值:" + min);
    }

    /**
     * 数组的合并
     */
    private static void arrayMerge(){
        String[] a = {"A", "R", "R"};
        String[] b = {"A", "Y"};
        List list = new ArrayList(Arrays.asList(a));
        list.addAll(Arrays.asList(b));
        Object[] c = list.toArray();
        System.out.println("合并后的数组:" + Arrays.toString(c)); //合并后的数组:[A, R, R, A, Y]
    }

    /**
     * 数组填充
     * Arrays.fill(array, value);
     * Arrays.fill(array, fromIndex, toIndex, value);
     */
    private static void arrayFill() {
        int[] array = new int[7];
        Arrays.fill(array, 100);  // 填充数组,每项值都为100
        System.out.println("数组array的元素:");
        for(int i=0; i<array.length; i++) {
            System.out.println(array[i]);
        }
        System.out.println("数组的另一种填充方式:");
        Arrays.fill(array, 3, 6, 66);
        for(int i=0; i<array.length; i++) {
            System.out.println(array[i]);  // 100 100 100 66 66 66 100
        }
    }

    /**
     * 查找数组中相同的元素
     * @param a
     */
    public static void findDupInArray(int[] a) {
        int count = 0;
        for(int j=0; j<a.length; j++) {
            for(int k=j+1; k<a.length; k++) {
                if(a[j] == a[k]) {
                    count++;
                }
            }
            if(count == 1) {
                System.out.println("重复元素:" + a[j]);   //2、4、6
            }
            count = 0;
        }
    }

    /**
     * 一、删除数组中的元素:Java 的数组是固定长度的,无法直接删除,
     * 我们可以通过创建一个新数组,把原始数组中要保留的元素放到新数组中即可:
     * 二、也可以使用 ArrayList 的 remove () 方法来删除数组列表的元素:
     */
    public static void delArrayValue() {
        int[] oldArr = new int[] {2,3,4,5,6,7,8};
        int num = 2; //要删除的数组下标
        int[] newArr = new int[oldArr.length - 1];
        for(int i=0; i<newArr.length; i++) {
            if(num < 0 || num >= oldArr.length) {
                throw new RuntimeException("元素越界...");
            }
            if(i < num) {
                newArr[i] = oldArr[i];
            } else {
                newArr[i] = oldArr[i+1];
            }
        }
        System.out.println(Arrays.toString(oldArr)); // [2, 3, 4, 5, 6, 7, 8]
        oldArr = newArr;
        System.out.println(Arrays.toString(oldArr));  //[2, 3, 5, 6, 7, 8]
    }

    /**
     * 使用removeall()方法来计算两个数组的差集
     */
    public static void arrayDiff() {
        ArrayList objArray = new ArrayList();
        ArrayList objArray2 = new ArrayList();
        objArray2.add(0, "com1");
        objArray2.add(1, "com2");
        objArray2.add(2, "nocom1");
        objArray2.add(3, "nocom2");

        objArray.add(0, "com1");
        objArray.add(1, "com2");
        objArray.add(2,"nocom3");
        System.out.println("objArray的元素:" + objArray); //[com1, com2, nocom3]
        System.out.println("objArray2的元素:" + objArray2); // [com1, com2, nocom1, nocom2]
        objArray.removeAll(objArray2);
        System.out.println("objArray2与objArray数组的差集:" + objArray); // [nocom3]
    }

    /**
     * 使用 retainAll () 方法来计算两个数组的交集:
     */
    public static void arrayIns() {
        ArrayList arr1 = new ArrayList();
        ArrayList arr2 = new ArrayList();
        arr1.add(0,"com1");
        arr1.add(1, "com2");
        arr1.add(2, "notcom2");

        arr2.add(0, "com1");
        arr2.add(1, "com2");
        arr2.add(2,"notcom");
        arr2.add(3,"notcom1");

        System.out.println("arr1的元素:" + arr1);  // [com1, com2, notcom2]
        System.out.println("arr2的元素:" + arr2);  // [com1, com2, notcom, notcom1]
        arr1.retainAll(arr2);
        System.out.println("arr1与arr2的交集:" + arr1);   // [com1, com2]
    }

    /**
     * 使用contains()方法来查找数组中的指定元素
     */
    public static void searchElement() {
        ArrayList<String> arr1 = new ArrayList<String>();
        ArrayList<String> arr2 = new ArrayList<String>();
        arr1.add(0,"com1");
        arr1.add(1, "com2");
        arr1.add(2, "notcom2");

        arr2.add(0, "com1");
        arr2.add(1, "com2");
        arr2.add(2,"notcom");
        arr2.add(3,"notcom1");

        System.out.println("arr1的元素:" + arr1);  // [com1, com2, notcom2]
        System.out.println("arr2的元素:" + arr2); // [com1, com2, notcom, notcom1]

        System.out.println("arr1是否包含字符串 com2 ? : " + arr1.contains("com2")); // arr1是否包含字符串 com2 ? : true
        System.out.println("arr2是否包含数组 arr1 ? :" + arr2.contains(arr1)); // arr2是否包含数组 arr1 ? :false
    }

    /**
     * 使用Arrays.equals()判断数组是否相等
     */
    public static void equalsArray() {
        int[] ary1 = {1,2,3,4,5,6};
        int[] ary2 = {1,2,3,4,5,6};
        int[] ary3 = {1,2,3,4};
        System.out.println("数组ary1是否与数组 ary2 相等? :" + Arrays.equals(ary1, ary2)); // 数组ary1是否与数组 ary2 相等? :true
        System.out.println("数组ary1是否与数组 ary3 相等?:" + Arrays.equals(ary1, ary3)); // 数组ary1是否与数组 ary3 相等?:false
    }
}

相关文章

  • java 数组实例练习

    路漫漫其修远兮,吾将上下而求索。

  • Java 数组

    Java 实例 - 数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 ...

  • Java集合

    Java 实例 - 数组转集合 以下实例演示了使用 Java Util 类的 Arrays.asList(name...

  • Java实例-数组

    1、Java 实例 – 数组排序及元素查找:使用sort()方法对Java数组进行排序,使用 binarySear...

  • java 日期时间的实例练习

    java 日期时间的实例练习:

  • java调用本地方法--JNI访问基本类型数组

    本篇结构: 简介 实例 一、简介 补充JNI基本类型数组访问实例。 对于基本数据类型数组,JNI 都有和 Java...

  • Java实例-集合

    1、Java 实例 – 数组转集合:使用 Java Util 类的 Arrays.asList(name) 方法将...

  • 【Java】数组

    声明数组变量 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: 实例 创建数组 Java语言...

  • java 字符串实例练习

    java 字符串操作的一些实例练习:

  • 数组

    声明数组变量 声明数组变量的语法: 实例,下面是这两种语法的代码示例: 创建数组 Java 语言使用 new 操作...

网友评论

      本文标题:java 数组实例练习

      本文链接:https://www.haomeiwen.com/subject/omjvtltx.html