黑马程序员_JAVA集合框架的工具类:Collections、Arrays

时间:2023-02-24 23:06:57

1Collections操作集合:查找、替换、排序等方法

class Test11{

    public static void main(String[] args){

       sortDemo();

    }

    public static void sortDemo(){

       List<String> list = new ArrayList<String>();

       list.add("adcd");

       list.add("aaa");

       list.add("z");

       list.add("kkkkk");

       list.add("qq");

       list.add("z");

 

       sop(list);

       Collections.swap(list, 12);//将集合中的位置1和位置2的元素互换一下

Collections.shuffle(list);//将集合中的元素按随机的方式进行排列

       int index = Collections.binarySearch(list,"aaaa");//如果未找到,那么查询到的输出结果为自然排序后的-(插入点)-1

       sop("index="+index);

       Collections.replaceAll(list, "aaa""pp");//替换元素,即将aaa替换成pp

       sop(list);

       Collections.reverse(list);//反转

       sop(list);

       sop("没有排序:"+list);

       Collections.sort(list);//自然排序,只能给list排序,不能给set排序

       sop("自然排序:"+list);

       Collections.sort(list,new straLenComparator());//利用比较器比较

       sop("比较器的排序:"+list);

       String max = Collections.max(list);//获取最大的

       String max2 = Collections.max(list,new straLenComparator());//根据比较器的排序获取最大的

       sop("max="+max);

       sop("max2="+max2);

       Collections.fill(list, "pp");//将集合中的所有元素替换成pp

       sop(list);   

    }

    public static void sop(Object obj){

       System.out.println(obj);

    }

}

class straLenComparator implements Comparator<String>{

    public int compare(String s1,String s2){

       if(s1.length()>s2.length())

           return 1;

       if(s1.length()<s2.length())

           return -1;

       return s1.compareTo(s2);

    }

}

Collections.reverseOrder()反转

class StrLenComparator implements Comparator<String>{

    public int compare(String s1,String s2){

       if(s1.length()>s2.length())

           return 1;

       if(s1.length()<s2.length())

           return -1;

       return s1.compareTo(s2);

    }

}

class Test11{

    public static void main(String[] args){

       TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());//逆向排序

       ts.add("abcde");

       ts.add("aaa");

       ts.add("kkk");

       ts.add("cccc");

       Iterator it = ts.iterator();

       while(it.hasNext()){

           System.out.println(it.next());

       }

       System.out.println("*************");

       TreeSet<String> ts2 = new TreeSet<String>(Collections.reverseOrder(newStrLenComparator()));//逆向排序

       ts2.add("abcde");

       ts2.add("aaa");

       ts2.add("kkk");

       ts2.add("cccc"); 

       Iterator it2 = ts2.iterator();

       while(it2.hasNext()){

           System.out.println(it2.next());

       }     

    }

}

2Arrays:用于操作数组的工具类,里面都是静态方法

 * Arrays.asList:将数组变成list集合

 * 把数组变成list集合有什么好处?

 * 可以使用集合的思想和方法来操作数组中的元素

 * 注意:将数组变成集合,不可以使用集合的增删方法。

 * 因为数组的长度是固定的

 * 如果你增删,那么会发生UnsupportedOperationException

 *

 * 如果数组中的元素都是对象,那么当变成集合时,数组中的元素就直接转成集合的元素

 * 如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在

 * int[] nums = {2,4,5};

 * List<int[]> li = Arrays.asList(nums);

 * Integer[] nums = {2,4,5};

 * List<Integer> li = Arrays.asList(nums);

 */

 

class Test11{

    public static void main(String[] args){

       int[] arr = {2,4,5};

       System.out.println(Arrays.toString(arr));

      

       //把数组变成list集合有什么好处?

       String[] arr2 = {"abc","cc","kkkk"};

       List<String> list = Arrays.asList(arr2);

       sop("contains:"+list.contains("cc"));

       list.add("qq");//UnsupportedOperationException

       sop(list);   

    }

    public static void sop(Object obj){

       System.out.println(obj);

    }

}