Java基础

Java编程思想笔记16.数组

2018-12-29  本文已影响2人  卢卡斯哔哔哔

点击进入我的博客

1 数组概述

数组相对其他容器的优点
  1. 数组是效率最高的存储和随机访问对象引用序列的方式。
  2. 数组可以保存基本类型
  3. 数组可以真正持有某种具体类型
数组是第一级对象
  1. 数组标识符只是一个引用,指向堆中的一个真实对象
  2. length是数组对象的一部分
  3. []是访问数组对象的唯一方式
  4. 数组中的对象会被默认初始化为null,值会被初始化为0
返回数组

Java中可以使用数组作为返回值

多维数组
  1. 多维数组必须指定第一维的长度,其他维度可以指定也可以不指定
  2. 多维数组除第一维之外,其他维度可以有不同的任意长度

2 数组与范型

  1. 不能实例化具有参数类型的数组
  2. 可以参数化数组本身的类型
  3. 可以创建范型数组的引用
  4. 可以把普通数组转型成范型数组
public class Main {
    public static void main(String[] args) {
        A<String>[] arr1 = new A<String>[10]; // (1)error
        A<String>[] arr2; // (3)warning
        A<String>[] arr3 = (A<String>[]) new A[10]; // (4)
    }
}

class A<T> {
    // (2)
    T[] func() {
        return (T[]) new Object()[];
    }
}
范型容器是比范型数组更好的选择

3 Arrays类的功能

  1. Arrays.fill():把全部或部分数组填充为某一个固定值
  2. Arrays.equals()Arrays.deepEquals():比较数组是否相等。数组相等的条件是数组长度相等,而且对应位置的元素也相等。
  3. Arrays.copy():底层调用的是System.arraycopy,用于复制数组,效率比for循环快的多。如果复制的内容是对象,那么只是复制了对象的引用(浅复制)。
  4. Arrays.binarySearch():对已排序的数组进行二分查找,如果数组未排序可能会无限循环。
  5. Arrays.sort():对数组中元素进行排序,只要数组中的元素实现了Comparable接口,或者提供一个Comparator。字符串的排序按照字典序进行排序,可以使用String.CASE_INSENSITIVE_ORDER来忽略大小写。
public class Main {
    public static void main(String[] args) {
        Item[] arr = {new Item(3), new Item(5), new Item(4)};
        System.out.println(Arrays.toString(arr)); // [3, 5, 4]
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr)); // [3, 4, 5]
        Arrays.sort(arr, new Comparator<Item>() {
            public int compare(Item o1, Item o2) {
                return o1.value == o2.value ? 0 : (o1.value > o2.value ? -1 : 1);
            }
        });
        System.out.println(Arrays.toString(arr)); // [5, 4, 3]
    }
}

class Item implements Comparable<Item> {
    public int value;

    public Item(int value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return value + "";
    }

    public int compareTo(Item o) {
        return value == o.value ? 0 : (value > o.value ? 1 : -1);
    }
}
上一篇下一篇

猜你喜欢

热点阅读