前面几节我们讲了数组,还有三种集合。在学了基本的知识之后我们可以来做一些稍微高级一点的事情了。
首先来说说我们的java.util.Arrays类吧。
-
首先,我们的Arrays类可以对我们的数组进行排序: Arrays.sort(array)
-
int arr[] = {1,4,2,5,7,3,6};
-
Arrays.sort(arr);
-
for (int i : arr) {
-
System.out.println(i);
-
}
运行完了之后你会发现已经正序输出了结果,当然我们还可以倒序输出:
-
int arr[] = {1,4,2,5,7,3,6};
-
Arrays.sort(arr);
-
for (int i = arr.length-1; i >= 0; i--) {
-
System.out.println(arr[i]);
-
}
-
对比数组:Arrays.equals(array1,array2)
-
int array1[] = {1,2,3,4,5};
-
int array2[] = {1,2,3,4,5};
-
System.out.println(Arrays.equals(array1, array2));
这里要和array.equals(array1)做个对比:
-
int array[] = {1,2,3,4,5};
-
int array1[] = {1,2,3,4,5};
-
System.out.println(array.equals(array1));
你会发现这次返回的结果是false,这是因为array.equals(array1)方法比较的是两个数组引用的内存地址是否相等,如果我们改成:
-
int array[] = {1,2,3,4,5};
-
int array1[] = array;
-
System.out.println(array.equals(array1));
则返回的内容就是true了
-
搜索元素第一次出现位置:Arrays.binarySearch(array,元素)
-
int array[] = {1,2,3,4,5};
-
System.out.println(Arrays.binarySearch(array, 2));
若元素不存在,则返回-1 注意,次方法必须用在升序数组中,否则还是会返回-1:
-
int array[] = {4,3,2,5,1};
-
System.out.println(Arrays.binarySearch(array, 1));
-
用Set给List去重复:
-
ArrayList<String> list = new ArrayList<>();
-
list.add("大妖怪");
-
list.add("大妖怪");
-
list.add("小妖怪");
-
list.add("小妖怪");
-
HashSet<String> set = new HashSet<>();
-
set.addAll(list);
-
for (String str : set) {
-
System.out.println(str);
-
}
上面的代码在声明集合的时候和我们之前讲的貌似有点不一样,你会发现我们在list的右边加了一个尖括号,如果你是通过代码提示来创建的,你会发现创建出来的代码会多出一个<E>,这个<E>,我们叫它泛型,泛型的意思是指,指定这个List/Set/Map只能存放的数据类型,这个类型可以是我们的八大类型,可以是字符串,还可以是我们以后要学到的对象,当然,如果不指定,其实默认的是Object类,也就是说可以放任何类型(我们后面会讲到,在java中Object类是所有Java类的祖先)。当然,如果我们要给Map指定泛型,需要指定key和value两个值。
-
java排序算法有不少,这里暂时就讲一下最经典的冒泡排序(倒序):
-
int array[] = {1,3,4,5,8,9,2,6,7,0};
-
int temp; //记录临时中间值
-
for (int i = 0; i < array.length - 1; i++) {
-
for (int j = i + 1; j < array.length; j++) {
-
if (array[i] < array[j]) { // 交换两数的位置
-
temp = array[i];
-
array[i] = array[j];
-
array[j] = temp;
-
}
-
}
-
}
-
for (int i : array) {
-
System.out.println(i);
-
}
有能力的童鞋还可以试着改成正序排序的算法。另外其它算法可以自行搜索。
-
List转数组:List.tpArray()
-
ArrayList<String> list = new ArrayList<>();
-
list.add("大妖怪");
-
list.add("小妖怪");
-
String array[] = array = (String[])list.toArray(new String[list.size()]);
-
for (String str : array) {
-
System.out.println(str);
-
}
-
数组转换List:Arrays.asList()
-
String[] arr = {"大妖怪","小妖怪"};
-
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
-
for (String str : arrayList) {
-
System.out.println(str);
-
}
jdk还有很多方法,在这不一一列出,附上jdk1.7的api中午文档文档供查询: http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
|