Java Arrays类

这篇具有很好参考价值的文章主要介绍了Java Arrays类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Arrays类

介绍

用于管理或操作数组(比如排序和搜索)

常用方法

1、Arrays.toString(ints):返回数组的字符串形式

int[] ints = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(ints));

2、sort排序(自然排序和定制排序)

import java.util.Arrays;
import java.util.Comparator;

public class Array01 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(ints));

        Integer[] arr = {-1, -2, 12};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));

        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        System.out.println(Arrays.toString(arr));
    }
}
package com.hspedu.arrays_;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author 韩顺平
 * @version 1.0
 */
public class ArraysSortCustom {
    public static void main(String[] args) {

        int[] arr = {1, -1, 8, 0, 20};
        //bubble01(arr);

        bubble02(arr, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                int i1 = (Integer) o1;
                int i2 = (Integer) o2;
                return i2 - i1;// return i2 - i1;
            }
        });

        System.out.println("==定制排序后的情况==");
        System.out.println(Arrays.toString(arr));

    }

    //使用冒泡完成排序
    public static void bubble01(int[] arr) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //从小到大
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    //结合冒泡 + 定制
    public static void bubble02(int[] arr, Comparator c) {
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //数组排序由 c.compare(arr[j], arr[j + 1])返回的值决定
                if (c.compare(arr[j], arr[j + 1]) > 0) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

0482_韩顺平Java_Arrays模拟排序_哔哩哔哩_bilibili

binarySearch通过二分搜索法进行查找

要求 arrays 必须排好序,如果数组为无序的,则不能使用binarySearch方法

在使用该方法时,如果查找的元素不在数组中,则返回-(low + 1); 看下面的代码

import java.util.Arrays;

public class Array01 {
    public static void main(String[] args) {
        int[] ints = {1, 2, 3, 4, 5};

        int index = Arrays.binarySearch(ints, 122);
        // 122如果存在于数组中的话,位置应该在 元素5 的后面
        // return -(low + 1); -->   low在源码中代表元素的位置,从1开始
        // return -(5 + 1); --> -6
        System.out.println(index);
    }
}

copyOf

从arr数组中,拷贝固定长度(从头开始计数)的元素到 数组 中。新建一个数组对象

  • 如果拷贝的长度大于数组的长度,则在新数组后面添加null

  • 如果长度为负数,则抛出异常

int[] ints = {1, 2, 3, 4, 5};
int[] intsCopy = Arrays.copyOf(ints, ints.length-2);
System.out.println(Arrays.toString(intsCopy));

fill

数组填充:将数组中的每个元素都替换成一个元素

int[] ints = {1, 2, 3, 4, 5};
Arrays.fill(ints, 99);
// 输出为  [99, 99, 99, 99, 99]
System.out.println(Arrays.toString(ints));

equals

比较两个数组中的元素是否完全一致(大小和顺序均一致),如果数组元素完全一致,则返回true

int[] ints = {1, 2, 3, 4, 5};
int[] ints2 = {1, 2, 3, 5, 4};
// 输出为:  false 
System.out.println(Arrays.equals(ints, ints2));

asList

将一组值,转换为一个List集合

List asListTest = Arrays.asList("zhang", "cheng");
// 输出为   [zhang, cheng]
System.out.println(asListTest);
// asListTest的编译类型为 List
// asListTest的运行类型为: class java.util.Arrays$ArrayList
System.out.println(asListTest.getClass());

测试题

Java Arrays类,java,算法

import java.util.Arrays;
import java.util.Comparator;

public class ArraysTest01 {
    public void sortBook(Book[] books, Comparator comparator) {
        for (int i = 0; i < books.length - 1; i++) {
            for (int j = i + 1; j < books.length; j++) {
                if (comparator.compare(books[i], books[j]) < 0) {
                    Book temp = books[i];
                    books[i] = books[j];
                    books[j] = temp;
                }
            }
        }
    }


    public static void main(String[] args) {
        Book[] books = new Book[4];
        books[0] = new Book("红楼梦", 100.43);
        books[1] = new Book("金瓶梅", 100.45);
        books[2] = new Book("青年文摘", 5);
        books[3] = new Book("java入门到放弃", 100.49);

        ArraysTest01 arraysTest01 = new ArraysTest01();

        arraysTest01.sortBook(books, new Comparator<Book>() {
            // Arrays.sort(books, new Comparator<Book>() {
            @Override
            public int compare(Book o1, Book o2) {
                double a = o1.getPrice();
                double b = o2.getPrice();
                System.out.println("a:" + a + " b:" + b);
                System.out.println(Math.floor(a - b));
                double v = a - b;
                if (v < 0) {
                    return 1;
                } else if (v > 0) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });

        for (Book book : books) {
            System.out.println(book);
        }
    }

}

class Book {
    private String name;
    private double price;

    public Book(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public double getPrice() {
        return price;
    }

    @Override
    public String toString() {
        return "Book{" + "name='" + name + '\'' + ", price=" + price + '}';
    }
}

Java Arrays类,java,算法文章来源地址https://www.toymoban.com/news/detail-587201.html

到了这里,关于Java Arrays类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 包装类和Arrays类(详细解释)

    目录 包装类 作用介绍 包装类的特有功能 Arrays类 Arrays.fill()  Arrays.toString()  Arrays.sort() 升序排序 降序排序 Arrays.equals() Arrays.copyOf() Arrays.binarySearch() 包装类其实就是8种基本数据类型对应的引用类型。 基本数据类型 引用数据类型 byte Byte short Short int Integer long Long char Character

    2024年02月10日
    浏览(42)
  • Java学习笔记(七)——操作数组工具类Arrays

    操作数组的工具类。 Arrays.toString() Arrays.binarySearch() Arrays.copyOf() 如果新数组的长度小于原始数组的长度——部分拷贝 如果新数组的长度等于原始数组的长度——完全拷贝 如果新数组的长度大于原始数组的长度——完全拷贝+补上默认初始化值0 Arrays.copyOfRange() 范围:包头不包

    2024年01月21日
    浏览(40)
  • Java中List,Set,数组Arrays相互转化

    很多场合需要进行转换( 例如力扣中 ) 数组转换其他时比较容易,反过来就需要操作一番 以下转换的方法并不唯一,但确保简洁易懂 常规的方法:从数组中拿出元素放进list 用工具类或者库函数: 这个比较容易,从数组中拿出元素放进set(同时会自动去重) 这个需要操作

    2024年02月11日
    浏览(44)
  • Java中合并两个数组的4种方法(How to Merge Two Arrays in Java)

    int[] arr1={1, 2, 3, 4, 5, 6}; //first array int[] arr2={7, 8, 9, 0}; //second array int[] arr3={1, 2, 3, 4, 5, 6, 7, 8, 9, 0} //resultant array There are following ways to merge two arrays: 1.Java arraycopy() method 2.Without using arraycopy() method 3.Java Collections 4.Java Stream API Java arraycopy() is the method of System class which belongs to java.la

    2024年02月11日
    浏览(42)
  • 【JAVA】包装类、正则表达式、Arrays类、Lambda表达式

    包装类是8种基本数据类型对应的引用类型 作用:后期的集合和泛型不支持基本类型,只能使用包装类 基本数据类型和其对应的引用数据类型的变量可以互相赋值 基本数据类型 引用数据类型 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean 包装类

    2024年02月13日
    浏览(58)
  • Java 浅谈数组(Array)和列表(ArrayList)的区别 介绍Arrays常用方法

    目录 一.数组和列表的区别 1.数组(Array) (1)数组(Array) (2)数组的声明与创建 (3)多维数组 (4)数组的优缺点 2.列表(ArrayList) (1)列表(ArrayList) (2)列表的声明与创建 (3)列表的优缺点 3.数组(Array)与列表(ArrayList)的区别 (1)空间大小 (2)存储内容

    2023年04月09日
    浏览(53)
  • Java创建一个长度为10的数组,利用Arrays.sort(), 为数组元素排序

    程序要求:1)创建一个整型数组,数组的长度为10.                     2)给数组元素赋值,要求乱序。                   3)利用fori循环将数组元素依次输出。                      4)利用Arrays.sort(), 为数组元素排序                   5)采用增加for循环将

    2024年02月08日
    浏览(52)
  • 【Java基础教程】(三十八)常用类库篇 · 第八讲:数组操作类——解析Arrays类中的全部操作方法,解锁Java数组操作技巧~

    前言:在学习本文之前,应该先学习并清楚了解Java基础部分的数组相关的概念和知识。 若还不具备学习条件,请先前往学习数组部分的基础知识: 《【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转

    2024年02月15日
    浏览(62)
  • 【Java面试题】Java基础——排序算法

    冒泡排序★★★ 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。 它重复的遍历过要排序的数列, 一次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来 。 这个算法的名字由来是因为越大的元素会经由交换慢慢\\\"浮\\\"到最后面。 当然,大家可以按照从大到小的

    2024年02月12日
    浏览(34)
  • JAVA算法(二)排序算法

    定义:相邻的数据两两比较,小的 放前面,大的放后面 过程: 相邻的元素两两比较,小的放左边,大的放右边。 第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面以此类推。 如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以。 定义: 从0索

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包