1. Arrays类
Arrays类具有以下常用功能:
给数组赋值:通过fill方法填充。
fill(arrays,[fromIndex], [toIndex], val)
将arrays的某一区域的值填充为val。对数组排序:通过sort方法,按升序。
sort(arrays)
将arrays数组内容进行升序排序。比较数组:通过equals方法比较数组中元素值是否相等。
equals(arrays1, arrays2)
判断arrays1和arrays2是否相等。获取数组内容:通过toString方法。
toString(arrays)
返回数组内容,可供打印。查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
binarySearch(arrays, [fromIndex], [toIndex], val)
通过二分法查找arrays指定区域中是否有val值,有则返回在数组中的索引。
其中:fromIndex和toIndex可选(重载),分别是需要操作的数的开始和结束索引。
2. 坑
Collections.singletonList(new Object());
生成的List为SingletonList,位于Collection内,也并无add等操作的实现,调用会报错。private static class SingletonList<E> extends AbstractList<E> implements RandomAccess, Serializable { SingletonList(E obj) {element = obj;} } // ... public static <T> List<T> singletonList(T o) { return new SingletonList<>(o); }
Arrays.asList(new Object());
生成的ArrayList不是常见的ArrayList,而是Arrays的静态内部类,也并无add等操作的实现,调用会报错。@SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } // ... private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
以上两个坑,如果生成的List需要进行add等操作,可以使用ArrayList的有参构造传入Collection生成新的list进行操作。