十、集合 —— 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);
		}
	}