当前位置: 首页 > article >正文

Java中Arrays类学习

Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。

1、Arrays.fill(); //填充数组

import java.util.Arrays;

public class T1Main {
    public static void main(String[] args) {
        int[] arr = new int[5];//新建一个大小为5的数组
        Arrays.fill(arr,4);//给所有值赋值4
        String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
        System.out.print(str);//输出:[4, 4, 4, 4, 4]
    }
}

2、Arrays.sort(); //数组排序

Arrays类有一个静态方法sort,利用这个方法可传入要排序的数组进去排序,因为传入的是一个数组的引用,所以排序完成的结果也通过这个引用来更改数组。

// 1.数字排序
int[] intArray = new int[] { 4, 1, 3, -24,-9};
Arrays.sort(intArray);
String str = Arrays.toString(intArray);
System.out.print(str);//[-24, -9, 1, 3, 4]

// 2.字符串排序,先大写后小写
String[] strArray = new String[] { "z", "a", "A"};
Arrays.sort(strArray);
System.out.print(Arrays.toString(strArray)); //输出:[A, a, z]

// 3.严格按字母表顺序排序,也就是忽略大小写排序
String[] strArray = new String[] { "z", "a", "D"};
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
System.out.print(Arrays.toString(strArray));//输出:[a, D, z]

// 4.反向排序
String[] strArray = new String[] { "z", "a", "D"};
Arrays.sort(strArray, Collections.reverseOrder());
System.out.print(Arrays.toString(strArray));//[z, a, D]

// 5.忽略大小写反向排序
String[] strArray = new String[] { "z", "a", "D"};
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(strArray));
System.out.print(Arrays.toString(strArray));//[z, D, a]

// 6.选择数组指定位置进行排序
int[] arr = {3,2,1,5,4};
Arrays.sort(arr,0,3);//给第0位(0开始)到第3位(不包括)排序
String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);//[1, 2, 3, 5, 4]

3、Arrays.toString(); //将数组中的内容全部打印出来

int[] arr = {3,2,1,5,4};
System.out.println(arr);//输出:[I@2133c8f8 (数组的地址)

String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.println(str);//输出:[3, 2, 1, 5, 4]

4、Arrays.equals(); //比较数组元素是否相等

int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1,arr2));//true

5、Arrays.binarySearch(); //二分查找法找指定元素的索引值(下标)

int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 30));//输出:2 (下标索引值从0开始)

int []arr1 = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr1, 0,3,40));
//输出:-4 (从0到3位(不包括)找40,找不到,从-1开始数,返回-4)

6、Arrays.copeOf() 和Arrays.copeOfRange(); //截取数组

int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.println(str);//输出:[10, 20, 30] (截取arr数组的3个元素赋值给新数组arr1)

int []arr2 = {10,20,30,40,50};
int []arr3 = Arrays.copyOfRange(arr2,1,3);
String str1 = Arrays.toString(arr3); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.println(str1);//输出:[20, 30] (从第1位(0开始)截取到第3位(不包括))

7、asList(T… a):主要用于遍历

该方法适用于对象型数据的数组(String、Integer…)
该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean)
该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新
不支持add()、remove()、clear()等方法
String[] strArray = new String[] { "z", "a", "A"};
List<String> list = Arrays.asList(strArray);
// 不支持add()、remove()、clear()等方法
list.add("f");// 如下异常

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractList.add(AbstractList.java:153)
	at java.base/java.util.AbstractList.add(AbstractList.java:111)
	at com.lwz.test.T6Main.main(T6Main.java:10)

源码:

public class Arrays {
...

private static class ArrayList<E> extends AbstractList<E>
    implements RandomAccess, java.io.Serializable
{
    private static final long serialVersionUID = -2764017481108945198L;
    private final E[] a;
    ArrayList(E[] array) {
        a = Objects.requireNonNull(array);
    }

...
// =====================================
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
    protected transient int modCount = 0;

    protected AbstractList() {
    }

    public boolean add(E e) {
        this.add(this.size(), e);
        return true;
    }

    public abstract E get(int var1);

    public E set(int index, E element) {
        throw new UnsupportedOperationException();
    }

    public void add(int index, E element) {
        throw new UnsupportedOperationException();
    }

    public E remove(int index) {
        throw new UnsupportedOperationException();
    }

所以当我们通过asList()方法生成一个列表实例时,对该实例进行插入和删除元素是会有异常的。同时也说明了生成的List对象的大小是由原来给定的数组决定的。

再小的努力,乘以365都很明显!
每天⽤⼼记录⼀点点。内容也许不重要,但习惯很重要!
一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃!


http://www.kler.cn/a/596684.html

相关文章:

  • C/C++蓝桥杯算法真题打卡(Day5)
  • PicFlow:一个图片处理与上传工作流工具(图床上传工具)
  • Linux——空间清理的方法
  • 创建自己的github.io
  • 【鸿蒙开发】Hi3861学习笔记- UDP客户端
  • 游戏立项时期随笔记录(2)
  • dify创建第一个Agent
  • 数据库练习2
  • 鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值
  • python __name__与__main__深刻理解(涵详细解释、应用场景、代码举例、高级用法)
  • Android studio运行报错处理
  • macOS使用brew切换Python版本【超详细图解】
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • 信号处理等相关知识点
  • mysql 导入全量备份
  • 代码随想录算法训练营第三十五天 | 46. 携带研究材料、416. 分割等和子集
  • C语言基础与进阶学习指南(附运行效果图及术语解析)
  • 使用brower use AI 代理自动控制浏览器完成任务
  • 异步编程与流水线架构:从理论到高并发
  • 基于深度学习的图像识别技术在工业检测中的应用