“尽管有种种相似之处,生活的每时每刻就像一个刚出生的婴儿,一张新的面孔,我们从未见过,也不可能再次见到。我们无法停留在过去,也无法预见我们的反应。我们需要不带成见的感受变化。我们需要用全身心去倾听。”
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 };
// 转化数组为 list
List<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) {
// 转化数组为 list
List<String> lists = Arrays.asList("小王","小明");
System.out.println("集合的长度是: " + lists.size());
// 转化数组为 list2
List<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 Array
Integer[] 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));
}
}
}