“尽管有种种相似之处,生活的每时每刻就像一个刚出生的婴儿,一张新的面孔,我们从未见过,也不可能再次见到。我们无法停留在过去,也无法预见我们的反应。我们需要不带成见的感受变化。我们需要用全身心去倾听。”
static List asList(T… a)
将任意类型的对象数组转化为List,这里T是泛型,在使用时需要声明具体类型。 ... 是可变参数的一种声明,当不确定有方法参数的长度时,可以使用。 需要注意的是,Arrays.asList()的参数值必须是对象数组,才支持泛型 。也就是基本类型的数组(byte,short,int,long,float,double,boolean)都不支持。
import java.util.Arrays;import java.util.List;public class ArraysMain {public static void main(String[] args) {// 数字数组Integer[] intArr = { 10, 20, 15, 22, 35 };// 转化数组为 listList<Integer> lists = Arrays.asList(intArr);System.out.println("集合的长度是: " + lists.size());}}
如下为... 的使用,在不确定参数个数的时候。
import java.util.Arrays;import java.util.List;public class ArraysMain {public static void main(String[] args) {// 转化数组为 listList<String> lists = Arrays.asList("小王","小明");System.out.println("集合的长度是: " + lists.size());// 转化数组为 list2List<String> lists2 = Arrays.asList("小王","小明","小李");System.out.println("集合2的长度是: " + lists2.size());}}
排序
Arrays.sort()的使用,也注意一下Arrays.toString(),这个方法其实是Java执行的时候遍历每一个数据调用其toString()方法,然后再组合成一个字符串。
import java.util.Arrays;public class ArraysSortTest {public static void main(String[] args) {// Get the ArrayInteger[] intArr = { 10, 20, 15, 22, 35 };// To sort the array using normal sort-Arrays.sort(intArr);System.out.println("Integer Array: "+ Arrays.toString(intArr));//Arrays.toString()方法任何类型数组都可以转化为字符串}}
自定义排序
若想要降序排序,就需要用到 java.util.Comparator ,这是一个接口,用来声明比较规则,接口方法如下:
public interface Comparator<T> {//返回值是 int,我们根据返回值 >0、=0、<0 进行重新排序,返回值>0,交换位置;返回值<0,不交换位置int compare(T o1, T o2);}
如果o1>o2,则升序;o1<o2,则降序。 关于这个方法的理解我不是很透彻,有一个我认为较为简单的记法:当想升序时,就 return o1-o2; ;想降序时,就 return o2-o1 。如果说理解的话,那么,需要根据返回值来进行排序。o1和o2表示需要排序的数据的顺序,o1是在o2的前面。返回 o2-o1时 ,如果 o2>o1 ,那么返回值就大于零,就交换o1和o2的位置,实现降序;如果 o2<o1 ,那么返回值小于零,就不交换o1和o2 的位置,依然是降序。升序同理。例子(此例子是数组的排序)如下:
import java.util.*;public class ArraysSortTest2 {public static void main(String[] args) {Integer[] intArr = { 10, 20, 15, 22, 35 };// 自定义排序Arrays.sort(intArr, new Comparator<Integer>(){public int compare(Integer o1, Integer o2){// 判断 o2>o1,执行降序排序return o2-o1;}});System.out.println("Integer Array: "+ Arrays.toString(intArr));}}
集合排序 (可以看到数组排序使用Arrays.sort(),集合排序使用Collections.sort())
需要注意的是,如果执行了 `Collections.sort() 方法。list的顺序会直接被修改为排序后。
import java.util.*;public class ListSortTest {public static void main (String[] args) {//有一个Student类的学生记录List<Student> ar = new ArrayList<Student>();ar.add(new Student(111, "bbbb", "london"));ar.add(new Student(131, "aaaa", "nyc"));ar.add(new Student(121, "cccc", "jaipur"));System.out.println("原始集合");for (int i=0; i<ar.size(); i++) {System.out.println(ar.get(i));}// 实现升序排序Collections.sort(ar, new Comparator<Student>(){public int compare(Student a, Student b) {// 第一个参数的学号 > 第二个参数的学号return a.getRollNo() - b.getRollNo();//降序返回b.getRollNo()-a.getRollNo();}});System.out.println("\n排序后的集合");for (int i=0; i<ar.size(); i++) {System.out.println(ar.get(i));}}}

