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

java基础知识(Arrays类)

引入:Arrays里面包含了一系列静态方法用于管理或制作数组,比如排序和搜索

import java.util.Arrays;

1)toString返回数组的字符串形式

Integer[] integers = {1, 20, 90};

//直接使用 Arrays.toString 方法,显示数组

 System.out.println(Arrays.toString(integers));//[1, 20, 90]

2)sort排序

Integer arr[] = {1, -1, 7, 0, 89};
Arrays.sort(arr);//从小到大
//sort是重载的,可以修改从大到小排序(定制排序)

3)binarySearch二分搜索法查找

Integer[] arr = {1, 2, 90, 123, 567};
// binarySearch 通过二分搜索法进行查找,要求必须排好
如果数组中不存在该元素,就返回 return -(low + 1); // key not found.low表示的是567应该在数组的位置下标
int index = Arrays.binarySearch(arr, 567);
System.out.println("index=" + index);//-6

4)copyOf数组元素的复制

Integer[] newArr = Arrays.copyOf(arr, arr.length)
//1. arr 数组中,拷贝 arr.length 个元素到 newArr 数组中
//2. 如果拷贝的长度 > arr.length 就在新数组的后面 增加 null
//例如原数组有[1,2,3],拷贝4个的话就是[1,2,3,null]
//3. 如果拷贝长度 < 0 就抛出异常 NegativeArraySizeException

5)fill数组元素的填充

//ill 数组元素的填充
Integer[] num = new Integer[]{9,3,2};
//1. 使用 99 去填充 num 数组,可以理解成是替换原理的元素
Arrays.fill(num, 99);
System.out.println("==num 数组填充后 ==");
System.out.println(Arrays.toString(num)//[99, 99, 99]

6)equals比较两个数组元素内容是否完全一致

//1. 如果 arr arr2 数组的元素一样,则方法 true
boolean equals = Arrays.equals(arr,arr2);

7)asList将一组值,转换成list

List asList = Arrays.asList(2,3,4,5,6,1);//List集合
System.out.println("asList=" + asList);
System.out.println("asList 的运行类型 " + asList.getClass());
//暂时还没学
//1. asList 方法,会将 (2,3,4,5,6,1) 数据转成一个 List 集合
//2. 返回的 asList 编译类型 List( 接口 )

例题:

package Test;
//import java.util.Arrays;
//import java.util.Comparator;


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

public class ArrayExercise {
    public static void main(String[] args) {
        /*
        案例:自定义Book类,里面包含name和price,按price排序(从大到小)。
        要求使用两种方式排序 , 有一个 Book[] books = 4本书对象.

        使用前面学习过的传递 实现Comparator接口匿名内部类,也称为定制排序。
        [同学们完成这个即可 10min  ],
        可以按照 price (1)从大到小 (2)从小到大 (3) 按照书名长度从大到小

         */

        Book[] books = new Book[4];
        books[0] = new Book("红楼梦", 100);
        books[1] = new Book("金瓶梅新", 90);
        books[2] = new Book("青年文摘20年", 5);
        books[3] = new Book("java从入门到放弃~", 300);

        //(1)price从大到小

//        Arrays.sort(books, new Comparator() {
//            //这里是对Book数组排序,因此  o1 和 o2 就是Book对象
//            @Override
//            public int compare(Object o1, Object o2) {
//                Book book1 = (Book) o1;
//                Book book2 = (Book) o2;
//                double priceVal = book2.getPrice() - book1.getPrice();
//                //这里老师进行了一个转换
//                //如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1
//                if(priceVal > 0) {
//                    return  1;
//                } else  if(priceVal < 0) {
//                    return -1;
//                } else {
//                    return 0;
//                }
//            }
//        });

        //(2)price从小到大
//        Arrays.sort(books, new Comparator() {
//            //这里是对Book数组排序,因此  o1 和 o2 就是Book对象
//            @Override
//            public int compare(Object o1, Object o2) {
//                Book book1 = (Book) o1;
//                Book book2 = (Book) o2;
//                double priceVal = book2.getPrice() - book1.getPrice();
//                //这里老师进行了一个转换
//                //如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1
//                if(priceVal > 0) {
//                    return  -1;
//                } else  if(priceVal < 0) {
//                    return 1;
//                } else {
//                    return 0;
//                }
//            }
//        });

        //(3)按照书名长度从大到小

        Arrays.sort(books, new Comparator() {
            //这里是对Book数组排序,因此  o1 和 o2 就是Book对象
            @Override
            public int compare(Object o1, Object o2) {
                Book book1 = (Book) o1;
                Book book2 = (Book) o2;
                //要求按照书名的长度来进行排序
                return book2.getName().length() - book1.getName().length();
            }
        });


        System.out.println(Arrays.toString(books));

    }
}

class Book {
    private String name;
    private double price;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

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

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

相关文章:

  • unity 绿幕抠图
  • PostgreSQL表膨胀问题解析
  • 自然语言处理基础之文本预处理
  • win10 禁止更新
  • 365天深度学习训练营-第P6周:VGG-16算法-Pytorch实现人脸识别
  • Android 12.0新增自定义HIDL问题记录
  • Java爬虫:深入解析商品详情的利器
  • 基于Springboot的流浪宠物管理系统
  • Vue.js 中 v-for 指令与 JavaScript 数组方法
  • Nvidia的hami是什么,以及如何再K8S中起作用
  • Zookeeper3.5.8集群部署
  • 数据库---HSQLDB使用教程详解
  • 什么是虚拟机栈
  • 200. 岛屿数量【 力扣(LeetCode) 】
  • 数据结构 (7)线性表的链式存储
  • uni-app中的样式尺寸单位,px,rpx,vh,vw
  • C++多线程——线程
  • 【人工智能】AutoML自动化机器学习模型构建与优化:使用Auto-sklearn与TPOT的实战指南
  • SpringBoot+Vue的音乐网站项目
  • mysql 触发器进入历史
  • Android 使用Charles抓包显示Unknown
  • MySQL 数据库索引优化实践指南
  • 利用阿里云镜像仓库和 Github Action 同步镜像
  • 【Qt】重写QComboBox下拉展示多列数据
  • CSGO游戏搬砖党如何应对上海Major
  • 【81-90期】Java核心面试问题深度解析:性能优化与高并发设计