java 数组 习题_java 数组实例练习

本文介绍了Java数组的各种操作,包括排序、二分查找、数组长度计算、反转、查找最大最小值、合并、填充、删除元素、计算差集和交集等,还展示了如何在数组中查找指定元素并判断数组是否相等。
摘要由CSDN通过智能技术生成

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

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 arrayList = new ArrayList();

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

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

System.out.println(array[i]);

}

System.out.println("数组的另一种填充方式:");

Arrays.fill(array, 3, 6, 66);

for(int i=0; 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

for(int k=j+1; 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

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 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]

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

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值