Java学习笔记七——数组工具类Arrays

数组工具类Arrays

  Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。若将里面的方法用熟的话,那开发效率会大大提高。下面介绍其中的方法。

List<T> asList(T... a)

  作用:将指定数组或数组元素,转换成固定大小的List。

  用法:

        String[] strArr = { "aaa", "bbb", "vvv" };
        //用法1:参数是数组引用
        List<String> list = Arrays.asList(strArr);
        for (String str : list) {
            System.out.println(str);
        }

        //用法2:参数是不限个数的数组元素
        List<String> list2 = Arrays.asList("aaa", "bbb", "vvv");
        for (String str : list2) {
            System.out.println(str);
        }

  注意:参数列表虽然是不定参数,但只有上面两种用法:要么是一个数组引用,要么是数据类型一致的多个参数。

int binarySearch(type[] a,type key)

  作用:使用二分法查询元素key在数组a中出现的索引。

  type:char,byte,short,int,float,double,String和自定义对象。

  限制:1.若type是基本数据类型或String,则数组a的元素必须是按照升序排列好的;

          2.若type是自定义对象,则该对象必须实现Comparable接口(只有一个compareTo方法,用于规定对象比较大小规则),且数组a的元素必须是按照升序排列好的。

  例子:

        int[] intArr = {12,34,45,56,67,78,89};
        int indexInt = Arrays.binarySearch(intArr, 67);
        System.out.println(indexInt); //4

        String[] strArr = { "aaa", "bbb","ccc", "vvv" };
        int indexStr = Arrays.binarySearch(strArr, "ccc");
        System.out.println(indexStr); //2

  下面看一个type是自定义对象的例子:

//自定义对象 ,必须实现Comparable接口
public class Model implements Comparable<Model> {

    public int age;

    //规定两个对象之间比较大小的规则,按照参数顺序,
    //若返回1,则当前对象>m;
    //若返回0,则当前对象==m;
    //若返回-1,则当前对象<m;
    //
    @Override
    public int compareTo(Model m) {
        if(age >m.age){
            return 1;
        }
        if(age == m.age){
            return 0;
        }
        //剩下的就是小于
        return -1;
    }
}
public class Test {

    public static void main(String[] args) {

        //定义3个Model对象
        Model m1 = new Model();
        m1.age = 20;
        Model m2 = new Model();
        m2.age = 45;
        Model m3 = new Model();
        m3.age = 32;
        //定义数组,按照从小到大顺序,即升序
        Model[] mArr = {m1,m3,m2};

        int indexM = Arrays.binarySearch(mArr, m3);
        System.out.println(indexM);  //1
    }
}

int binarySearch(type[] a,int fromIndex,int toIndex,typekey)

  作用:与上个方法类似,只是搜索数组a中fromIndex索引到toIndex索引之间的元素。

  type:char,byte,short,int,float,double,String和自定义对象。

  限制:同上。

  例子:略

type[] copyOf(type[] original,int newLength)

  作用:复制数组original的newLength个元素,组成新的数组,并返回这个新数组。

  type:type:基本类型,String类型和自定义对象。

  说明:若newLength小于original数组的长度,则返回original数组的前newLength个元素;若newLength大于original数组的长度,则则不足的补充0(数值类型)、false(布尔类型)、null(引用类型)。

  例子:

public class Test {

    public static void main(String[] args) {

        int[] original = {1,2,3,4,5};
        //小于original数组长度
        int[] newArr = Arrays.copyOf(original, 3);
        for (int i : newArr) {
            System.out.println(i);  //1,2,3
        }

        //大于original数组长度
        int[] newArr2 = Arrays.copyOf(original, 8);
        for (int i : newArr2) {
            System.out.println(i);  //1,2,3,4,5,0,0,0
        }

    }
}

type[] copyOfRangetype[] original,int from,int to)

  作用:复制original中索引从from到to之间的元素(包括from,不包括to),组成新数组并返回该新数组。

  type:基本类型,String类型和自定义对象。

  例子:

import java.util.Arrays;

public class Test {

    public static void main(String[] args) {

        int[] original = { 1, 2, 3, 4, 5 };
        int[] newArr = Arrays.copyOfRange(original, 0, 2);
        for (int i : newArr) {
            System.out.println(i); // 1,2
        }

    }
}

boolean equals(type[] a1, type[] a2)

  作用,比较两个数组,若a1和a2的长度相等,并且a1的每个元素都与a2与之对应索引的元素都相等,则返回true;否则返回false

  type:基本类型,String类型和自定义类型(实现Comparable接口)

  例子:

import java.util.Arrays;

public class Test {

    public static void main(String[] args) {

        String[] a1 = { "aaa","bbb","ccc"};
        String[] a2 = { "aaa","bbb","ccc"};
        String[] a3 = { "aaa","www","ccc"};
        boolean a1a2 = Arrays.equals(a1, a2);
        System.out.println(a1a2);  //true

        boolean a1a3 = Arrays.equals(a1, a3);
        System.out.println(a1a3);  //false
    }
}

void fill(type[] a,type val)

  作用:将数组a的元素全部赋值为val,若原来有值,则覆盖。相当于用val填充数组a。

  type:基本类型,String类型和自定义类型

  例子:

import java.util.Arrays;

public class Test {

    public static void main(String[] args) {

        String[] a = new String[5];
        Arrays.fill(a, "aaa");
        for (String str : a) {
            System.out.println(str);  //打印5次 "aaa"
        }
    }
}

void fill( type[] a,int fromIndex,int toIndex,type val)

  作用:用val填充数组a中索引从fromIndex到索引toIndex的元素,包括fromIndex,不包括toIndex

  type:基本类型,String类型和自定义类型

  例子:

import java.util.Arrays;

public class Test {

    public static void main(String[] args) {

        String[] a = { "111", "222", "333", "444444", "5555555555" };
        Arrays.fill(a, 2, 4, "mmm");
        for (String str : a) {
            System.out.println(str); // 打印"111", "222","mmm","mmm","5555555555"
        }
    }
}

未完待续。。。

时间: 11-28

Java学习笔记七——数组工具类Arrays的相关文章

java学习笔记之DBUtils工具类

DBUtils工具类 一.介绍 DBUtils是Apache组织开源的数据库工具类. 二.使用步骤 ①.创建QueryRunner对象 ②.调用update()方法或者query()方法执行sql语句 三.构造方法及静态方法 QueryRunner类 1.构造方法 ①.无参构造 QueryRunner qr =new  QueryRunner(); 使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式 ②.有参构造 QueryRunner

Java学习:数组工具类Arrays

数组工具类Arrays java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组常见的操作. public static String toString(数组): 将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3...]) public static void sort(数组): 按照默认升序(从小到大)对数组的元素进行排序. 备注:1.如果是数组,sort默认按照升序从小到大2.如果是字符串,sort默认按照字母升序3.如果是自定义的类型,那

Java学习笔记_23_List接口实现类

23.List接口实现类: List接口继承了Collection接口,它是一个允许存在重复项的有序集合. 1>实现类ArrayList: ArrayList类支持可随需要而增长的动态数组.数组列表以一个原大小被创建,当超过了它的大小, 类集自动增大,当对象被删除后,数组就可以缩小. 优点:ArrayList类对于使用索引取出元素用较高的效率,他可以用索引快速定位对象. 缺点:ArrayList类对于元素的删除或插入速度较慢. 构造方法: · ArrayList(): 构造一个初始容量为10的空

java学习笔记07--日期操作类

java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. [java] view plaincopy public class T { public static void main(String[] args) { Date date  = new Date(); System.out.println("当前日期:"+date); //当前日期:Thu May 16 23:00:57 CST 

数组 工具类 Arrays API

Arrays 数组工具类 public class Arrays extends Object 1 1 1 public class Arrays extends Object 此类包含用来操作数组(比如排序和搜索)的各种方法.此类还包含一个允许将数组作为列表来查看的静态工厂. 除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException. 此类是 Java Collections Framework 的成员. asList 方法 static

Java知识系统回顾整理01基础06数组07数组工具类Arrays

一.Arrays简介 Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. ? ? 二.Arrays提供的数组复制方法 与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制. 不同的是System.arraycopy,需要事先准备好目标数组,并分配长度. copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了. 除此之外,需要注意的是 copyOfRan

Java学习笔记:数组

package myjava; /**  * 数组  * @author Administrator  *  */ import java.util.*; public class Myarray { public static void main(String args[]) { // 数组排序 int array[] = { 1, 9, 4, 2, 8, 6, 7 }; Arrays.sort(array); // 数组输出 for (int item : array) { System.o

疯狂java学习笔记之面向对象-定义类、方法、构造器

Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始 定义类的语法格式: [修饰符]  class  类名{ //0 ~ N 个 Field 定义 //0 ~ N 个 方法定义 //0 ~ N个 构造器定义 } 一个类中最多只能出现五种成分:Field.方法.构造器 一个类最常见

java学习-加载.properties工具类

javaWeb项目,要加载xxx.properties或其它如.txt, .md后缀的文本文件 文本内容有两种格式 key:value或者key=value 诸如Spring框架,Jfinal框架,都是使用java.util.Properties类来加载文本配置文件 Poperties类是按行读取key和value,所以我们写配置文件时,只能一行一个key/value键值对 这些配置文件一般会在编译时打包到WEB-INF/classes/文件夹下 我们要加载时就要通过使用下面方法获取InputS