Java集合(十三)Collections工具类

Collections工具类介绍:

(1)Collections是一个操作Set、List和Map等集合的工具类

(2)Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作

排序操作:(均为static方法)

(1)reverse(List):反转List中元素的顺序

(2)shuffle(List):对List集合元素进行随机排序

(3)sort(List):根据元素的自然顺序对指定List集合按升序排序

(4)sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序

(5)swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换

我们设计代码如下所示:

package com.rgf.collections_;

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

@SuppressWarnings({"all"})
public class Collections_ {
    public static void main(String[] args) {
        //创建AraayList集合,进行测试

        List list = new ArrayList();
        list.add("tom");
        list.add("smith");
        list.add("king");
        list.add("milan");
        System.out.println("list="+list);
//(1)reverse(List):反转List中元素的顺序
        Collections.reverse(list);
        System.out.println("list="+list);
//(2)shuffle(List):对List集合元素进行随机排序
        for (int i = 0; i < 3; i++) {
            Collections.reverse(list);
            System.out.println("list="+list);
        }
//(3)sort(List):根据元素的自然顺序对指定List集合按升序排序
        Collections.sort(list);
        System.out.println("自然排序后");
        System.out.println("list="+list);
//(4)sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
        //我们希望按照字符串的长度大小进行排序
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                //可以加入校验代码
                return ((String)o1).length()-((String)o2).length();
            }
        });
        System.out.println("字符串长度大小排序="+list);
//(5)swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换
        Collections.swap(list,0,1);
        System.out.println("交换后的情况");
        System.out.println("list="+list);
    }
}

运行界面如下所示:

 查找、替换:

(1)Object max(Collection):根据元素的自然排序,返回给定集合中的最大元素

(2)Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素

(3)Object min(Collection):根据元素的自然排序,返回给定集合中的最小元素

(4)Object min(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素

(5)int frequency(Collection,Object):返回指定集合中指定元素的出现次数

(6)void copy(List dest,List src):将src中的内容复制到dest中

(7) boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List对象的所有旧值

我们在替换过程中,我们呢发现抛出如下异常:

 我们进入copy的源码进行查看:

 public static <T> void copy(List<? super T> dest, List<? extends T> src) {
        int srcSize = src.size();//原来集合的大小
        if (srcSize > dest.size()) //原来数组的大小大于现在集合的大小,直接抛出异常。
            throw new IndexOutOfBoundsException("Source does not fit in dest");
 if (srcSize < COPY_THRESHOLD ||
            (src instanceof RandomAccess && dest instanceof RandomAccess)) {
            for (int i=0; i<srcSize; i++)
                dest.set(i, src.get(i));
        } else {
//上述不成立就进入迭代器
            ListIterator<? super T> di=dest.listIterator();
            ListIterator<? extends T> si=src.listIterator();
            for (int i=0; i<srcSize; i++) {
                di.next();
                di.set(si.next());
            }
        }
    }

我们设计的代码如下所示:

package com.rgf.collections_;

import java.util.*;

@SuppressWarnings({"all"})
public class Collections_ {
    public static void main(String[] args) {
        //创建AraayList集合,进行测试

        List list = new ArrayList();
        list.add("tom");
        list.add("smith");
        list.add("king");
        list.add("milan");
        System.out.println("list="+list);


//(1)Object max(Collection):根据元素的自然排序,返回给定集合中的最大元素
        Collections.max(list);
        System.out.println("自然顺序最大元素="+Collections.max(list));
//(2)Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素
        //返回字符串长度最大的元素
      Object maxobject=Collections.max(list, new Comparator() {
          @Override
          public int compare(Object o1, Object o2) {
              return ((String)o1).length()-((String)o2).length();
          }
      });
        System.out.println("长度最大的元素="+maxobject);
//(3)Object min(Collection):根据元素的自然排序,返回给定集合中的最小元素
        Collections.min(list);
        System.out.println("自然顺序最小元素="+ Collections.min(list));
//(4)Object min(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素
        Object minobject=Collections.min(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String)o1).length()-((String)o2).length();
            }
        });
        System.out.println("长度最小的元素="+minobject);
//(5)int frequency(Collection,Object):返回指定集合中指定元素的出现次数
        list.add("tom");
        int tom = Collections.frequency(list, "tom");
        System.out.println("tom出现的次数="+tom);
//(6)void copy(List dest,List src):将src中的内容复制到dest中
        //为了完成一个完整拷贝,我们需要先给dest赋值,大小和list.size()一样
        List List1 = new ArrayList();
        for (int i=0;i<list.size();i++){
            List1.add("");
        }
        Collections.copy(List1,list);
        System.out.println("List="+list);
//(7) boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List对象的所有旧值
        //如果List中,有tom,就替换成 汤姆
        Collections.replaceAll(list,"tom","汤姆");
        System.out.println("list替换后="+list);
    }
}

运行界面如下所示:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直再追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值