声明:部分内容参考自:https://liuyanzhao.com/2863.html


Arrays类介绍

这个类包含了用于操作数组的各种方法,诸如:排序和搜索。

这个类还包含一个静态方法asList以允许把数组看作list处理。

如果方法引用的数组为null, 方法将会抛出NullPointerException。

类定义

public class Arrays

extends Object

常用方法

1.填充数组:fill
2.数组元素排序:sort
3.比较数组元素是否相等:equals

分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了

equals,所以,这里能比较元素是否相等。

这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码。

4.二分查找法找指定元素的索引值(下标):binarySearch
5.截取数组:copeOf和copeOfRange
6.将数组转换为List处理

注意:

(1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)
(2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
(3)不支持add和remove方法

package com.dylan.collection;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List; /**
* 介绍Arrays类的使用
*
* @author xusucheng
* @create 2018-02-04
**/
public class ArraysDemo {
public static void main(String[] args) {
//1. 填充数组fill
fill();
//2. 数组元素排序:sort
sort();
//3. 比较数组元素是否相等:equals
equals();
//4. 二分查找法找指定元素的索引值(下标):binarySearch
search();
//5. 截取数组:copeOf和copeOfRange
copy();
//6. 将数组转换为List处理
toList(); } private static void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
} System.out.println();
} private static void fill() {
int[] arr = new int[5];
Arrays.fill(arr, 2); int[] arr1 = new int[5];
Arrays.fill(arr1, 1, 3, 8);
print(arr);
print(arr1);
} private static void sort(){
int[] arr = {3,2,1,5,4};
Arrays.sort(arr);
int[] arr1 = {3,2,1,5,4};
Arrays.sort(arr,1,3);
print(arr);
print(arr1);
} private static void equals(){
int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println("arr1=arr2?"+Arrays.equals(arr1,arr2));
} private static void search(){
int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 20));
System.out.println(Arrays.binarySearch(arr, 35));
System.out.println(Arrays.binarySearch(arr, 0,3,30));
System.out.println(Arrays.binarySearch(arr, 0,3,40)); } private static void copy(){
int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
int[] arr2 = Arrays.copyOfRange(arr,1,3); print(arr1);
print(arr2);
} private static void toList(){
Integer[] arr = {10,20,30,40,50};
List list = Arrays.asList(arr);
Iterator it = list.iterator();
while (it.hasNext()){
System.out.print(it.next()+" ");
}
}
}

Java集合框架学习(十二) Arrays类详解的更多相关文章

  1. 集合框架学习之Collection和Map详解

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...

  2. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  3. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

  4. Java集合框架学习(一)List

    先附一张Java集合框架图. 从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Coll ...

  5. Java集合框架学习

    集合框架 集合框架的目标 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现必须是高效的. 该框架允许 不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必 ...

  6. 【java基础 11】java集合框架学习

    导读:本篇博客主要是从整体上了解java的集合框架,然后主要介绍几个自己在项目中用到的结构,比如说:hashtable.hashmap.hashset.arraylist等! 一.宏观预览 从宏观上看 ...

  7. Java集合框架学习笔记

    集合类的由来:对象用于封装特有数据,对象多了需要存储,如果对象的长度不确定,就使用集合存储. 集合特点1.用于存储对象的容器.2.集合的长度可变.3.集合中不可以存储基本类型 集合容器因为内部的数据结 ...

  8. java.util.Arrays类详解(源码总结)

    概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...

  9. 【Java入门提高篇】Day30 Java容器类详解(十二)TreeMap详解

    今天来看看Map家族的另一名大将——TreeMap.前面已经介绍过Map家族的两名大将,分别是HashMap,LinkedHashMap.HashMap可以高效查找和存储元素,LinkedHashMa ...

  10. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

随机推荐

  1. 战略设计- DDD

    随着系统的增长,它会变得越来越复杂,当我们无法通过分析对象来理解系统的时候,就需要掌握一些操纵和理解大模型的技术了.本文将介绍一些原则.遵循这些原则,就可以对非常复杂的领域进行建模.大部分这样的决策都 ...

  2. [转帖]clickhouse 超底层原理& 高可用集群 实操(史上最全)

    https://www.cnblogs.com/crazymakercircle/p/16718469.html 文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵 ...

  3. [转帖]Shell if 条件判断

      Shell  语言中的if条件 一.if的基本语法: if [ command ];then    符合该条件执行的语句 elif [ command ];then    符合该条件执行的语句 e ...

  4. [转帖]在麒麟Linux安装Postgis

    https://jimolonely.github.io/tech/linux/install-postgis-kylin/ 接着上一篇在麒麟linux上安装Postgresql12.5 ,我们来安装 ...

  5. 【转帖】关于网卡特性TSO、UFO、GSO、LRO、GRO

    https://www.cnblogs.com/larrypeng/p/12496810.html 我们来看下关于网卡特性的解释,不过记住GSO和GRO两个特性就好. TSO(TCP Segmenta ...

  6. CoreMark简单学习

    CoreMark简单学习 下载 https://github.com/eembc/coremark-pro 需要注意, 其实coremark是有两组. 一组是coremark 一组是 coremark ...

  7. SPEC2006的学习与总结

    SPEC2006的学习与总结 摘要 最近特别想进行一些性能验证工作. 所以研究了spec2006 然后想整理一下之前的内容. 想着将内容整理一下. 这次主要是抄别人的. 知识来源: https://b ...

  8. 使用Navicat 进行MySql数据库同步功能

    使用Navicat 进行MySql数据库同步功能 作者:胡德安 准备: 打开Navicat管理工具(比如Navicat Premium 15管理工具) 两个数据库第一个是源数据库A和要被同步的目标数据 ...

  9. 如何在 Linux 上使用 NPOI

    由于 NPOI 使用 System.Drawing.Common,因此在 Linux 系统上必须安装 libgdiplus 和 libc6. Ubuntu 16.04+ apt-get install ...

  10. C/C++ 实现正反向端口映射

    通常服务器是放在内网中,内部局域网中,并且分配了私有IP地址,而如果想要在外部直接访问内部服务器则需要端口映射,端口映射也叫做端口转发,或者叫做虚拟服务器,在渗透时当我们拿到目标机器权限以后,目标机器 ...