十、集合 —— Collections-sort
import java.util.*;
class CollectionsDemo
{
public static void main(String[] args)
{
sortDemo();
}
public static void sortDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkkk");
list.add("qq");
list.add("zz");
sop(list);//[abcd, aaa, z, kkkkk, qq, zz]
Collections.sort(list,new StrLenComparator());
sop(list);//[z, qq, zz, aaa, abcd, kkkkk]
/*
当不传入比较器时:
Collections.sort(list);
sop(list);
结果:[aaa, abcd, kkkkk, qq, z, zz]
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class StrLenComparator implements Comparator<String>
{
public int compare(String s1, String s2)
{
int num = s1.length()-s2.length();
if(num==0)
return s1.compareTo(s2);
return num;
}
}
public static void maxDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
Collections.sort(list);
sop(list);//[aaa, abcd, kkkkk, qq, z, zz]
String max = Collections.max(list);
sop("max="+max);//max=zz
}
public static void binarySearchDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkkk");
list.add("qq");
list.add("zz");
Collections.sort(list,new StrLenComparator());
sop(list);//[z, qq, zz, aaa, abcd, kkkkk]
int index = Collections.binarySearch(list,"qq",new StrLenComparator());
sop("index="+index);//index=1
}
public static void fillDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("z");
list.add("kkkkk");
sop(list);
Collections.fill(list,"pp");
sop(list);//[pp, pp, pp, pp]
}
public static void replaceAllDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
sop(list);
sop(Collections.replaceAll(list,"aaa","bbb"));//true
sop(list);//[abcd, bbb, zz, kkkkk]
}
public static void reverseDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
sop(list);//[abcd, aaa, zz, kkkkk]
Collections.reverse(list);
sop(list);//[kkkkk, zz, aaa, abcd]
}
public static void orderDemo()
{
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());//该处调用方法
ts.add("abcde");
ts.add("aaa");
ts.add("k");
ts.add("cc");
sop(ts);//[k, cc, abcde, aaa]
}
public static void orderDemo()
{
//TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());//该处调用方法
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator()));
ts.add("abcd");
ts.add("aaa");
ts.add("zz");
ts.add("kkkkk");
ts.add("qq");
ts.add("z");
sop(ts);//[kkkkk, abcd, aaa, zz, qq, z]
}
public static void swapDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
sop(list);//[abcd, aaa, zz, kkkkk]
Collections.swap(list,1,3);
sop(list);//[abcd, kkkkk, zz, aaa]
}
public static void shuffleDemo()
{
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("z");
list.add("qq");
Collections.sort(list);
sop(list);//[aaa, abcd, kkkkk, qq, z, zz]
Collections.shuffle(list);
sop(list);//每次出现的顺序都不一样。
}
import java.util.*;
class ArraysDemo
{
public static void main(String[] args)
{
//int[] arr = {2,4,6};
//System.out.println(Arrays.toString(arr));//[2,4,6]
String[] arr = {"abc","cc","kkkk"};
List<String> list = Arrays.asList(arr);
System.out.println("contains: "+list.contains("cc"));
}
}
import java.util.*;
class Demo
{
public static void main(String[] args)
{
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
String[] arr = al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(arr));//[abc1, abc2, abc3]
}
}
import java.util.*;
class ForEachDemo
{
public static void main(String[] args)
{
forEachDemo();
}
public static void forEachDemo()
{
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
for(String s : al)
{
s = "kk";
System.out.println(s);//kk kk kk
}//高级for循环只能取出,不能修改。
System.out.println(al);//[abc1, abc2, abc3]
int[] arr = {2,5,7};
for(int i : arr)
{
System.out.println(i);//2 5 7
}
}
}
class ParamMethodDemo
{
public static void main(String[] args)
{
//method();
show(2,5,6,7);
show();//结果为sum=0
}
//JDK1.5版本后出现的新特性:可变参数
public static void show(int... arr)//自动封装成数组。
{
System.out.println("arr.length="+arr.length);
int sum = 0;
for (int x=0 ;x<arr.length ;x++ )
{
sum = arr[x] + sum;
}
System.out.println("sum="+sum);
}
//1.5版本以前使用的方法,该方法需要自己创建数组
public static void method()
{
int[] arr = {3,4};
show_1(arr);
int[] arr1 = {5,6,8};
show_1(arr1);
}
public static void show_1(int[] arr)
{
int sum = 0;
for (int x=0 ;x<arr.length ;x++ )
{
sum = arr[x] + sum;
}
System.out.println("sum="+sum);
}
}
import java.util.*;//导入类
import static java.util.Arrays.*;//导入Arrays类中的所有成员
import static java.lang.System.*;//导入System类中的所有成员
class StaticImport
{
public static void main(String[] args)
{
//method();
show();
}
//静态导入
public static void show()
{
int[] arr = {3,1,5};
sort(arr);
int index = binarySearch(arr,5);
out.println(Arrays.toString(arr));//toString()方法与本类中的方法重名,所有需指定方法所属的对象或者类。
out.println(new StaticImport().toString());//Object中的toString方法没有参数。
System.out.println("index="+index);
}
//非静态导入
public static void method()
{
int[] arr = {3,1,5,9};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,5);
System.out.println(Arrays.toString(arr));
System.out.println("index="+index);
}
}