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

本文深入探讨了Java中Collections类和Arrays类的操作方法,包括集合的查找、替换、排序、随机排列、二分搜索、元素替换、反转、自然排序、自定义排序、最大元素获取、元素填充等功能。同时介绍了如何将数组转换为列表集合及其优势,以及如何使用Collections类进行数组排序和自定义排序。此外,还展示了如何使用TreeSet进行逆向排序。

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);

    }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值