突破!斗者--Collections工具类

        那一年,我们还是三段斗之气,经过刻苦修炼,掌握了List、Set、Map,将ArrayList、HashMap等常用集合的源码心经也都了然于心,只要过了今天,我段坤,就可以成为一名一星斗者,百里挑一,战无不胜,集合框架大成,从此拳打北山幼儿园,脚踢南海敬老院。你过来啊~

该系列文章上一篇: 突飞猛进九段斗之气–Map接口.

Collections是Collection的复数形式

        标题只是皮一下,实际上两者一个是牛,一个是马。Arrays是操作数组Array的工具类,同样的Collections就是一个操作Set、List 和Map等集合的工具类。Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。


Collections的常用方法

老规矩,修炼还得按程序来,先列举一下常用的工具方法,然后用代码进行测试。

方法声明方法作用
reverse(List)反转List中元素的顺序
shuffle(List)对List集合元素及进行随机排序
sort(List)根据元素的自然顺序对指定List集合元素按升序排序
sort(List, Comparator)根据指定的Comparator产生的顺序对List集合元素进行排序
swap(List, int, int)将指定list集合中的i处元素和j处元素进行交换
Object max(Collection)根据元素的自然顺序,返回给指定集合中的最大元素
Object max(Collection, Comparator)根据Comparator指定的顺序,返回给定集合中的最大元素
Object min(Collection)根据元素的自然顺序,返回给指定集合中的最小元素
Object min(Collection, Comparator)根据元素的自然顺序,返回给指定集合中的最小元素
int frequency(Collection, Object)返回指定集合中指定元素的出现次数
void copy(List dest, List src)将src中的内容复制到dest中
boolean replaceAll(List list,
Object oldVal, Object newVal)
使用新值替换List对象的所有旧值
package com.learnjiawa.jihe;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Collections:操作Collection、Map的工具类
 */
public class CollectionsTest {

/*
		reverse(List):反转 List 中元素的顺序
		shuffle(List):对 List 集合元素进行随机排序
		sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
		sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
		swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
		
		Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
		Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
		Object min(Collection)
		Object min(Collection,Comparator)
		int frequency(Collection,Object):返回指定集合中指定元素的出现次数
		void copy(List dest,List src):将src中的内容复制到dest中
		boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值

 */
    @Test
    public void test2(){
        List list = new ArrayList();
        list.add(123);
        list.add(43);
        list.add(765);
        list.add(-97);
        list.add(0);

        //报异常:IndexOutOfBoundsException("Source does not fit in dest")
//        List dest = new ArrayList();
//        Collections.copy(dest,list);
        //正确的:
        List dest = Arrays.asList(new Object[list.size()]);
        System.out.println(dest.size());//list.size();
        Collections.copy(dest,list);

        System.out.println(dest);


        /*
        Collections 类中提供了多个 synchronizedXxx() 方法,
        该方法可使将指定集合包装成线程同步的集合,从而可以解决
        多线程并发访问集合时的线程安全问题

         */
        //返回的list1即为线程安全的List
        List list1 = Collections.synchronizedList(list);


    }

    @Test
    public void test1(){
        List list = new ArrayList();
        list.add(123);
        list.add(43);
        list.add(765);
        list.add(765);
        list.add(765);
        list.add(-97);
        list.add(0);

        System.out.println(list);

//        Collections.reverse(list);
//        Collections.shuffle(list);
//        Collections.sort(list);
//        Collections.swap(list,1,2);
        int frequency = Collections.frequency(list, 123);

        System.out.println(list);
        System.out.println(frequency);

    }

}

  • Collections类中提供了多个synchronizedXxx()方法,该方法可使指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题。

参考文献

[1]Bruce Eckel.Java编程思想(第4版)[M].机械工业出版社,2008:459-524.

更多

对我的文章感兴趣,持续更新中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值