动力节点口口相传的Java黄埔军校
Java集合中Collections工具类都有哪些
2019-09-03 来源:动力节点

  

今天动力节点java培训机构小编为你分享“Java集合中Collections工具类都有哪些呢”,希望通过此文能够帮助到java零基础学员,下面就随小编一起看看Java集合中Collections工具类都有哪些?


Collections工具类


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


  Collection和Collections的区别?


  Collection是用来存储单列数据的集合接口,常用子接口有List和Set


  Collections是操作Collection的工具类。



  常用方法


  排序操作:


  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 对象的所有旧值


  举例:


  reverse反转方法


@Test

public void test3() {

    // 测试reverse方法

    List list = new ArrayList();


    list.add(2121);

    list.add(-1);

    list.add(21);

    list.add(0);

    list.add(45);


    //反转

    Collections.reverse(list);

    System.out.println(list);//[45, 0, 21, -1, 2121]

}


sort方法


@Test

public void test2() {

    // 测试sort方法

    List list = new ArrayList();


    list.add(2121);

    list.add(-1);

    list.add(21);

    list.add(0);

    list.add(45);


    //按升序排序

    Collections.sort(list);

    System.out.println(list);//[-1, 0, 21, 45, 2121]

}


  逆序排序


  int compareTo(T t)方法说明


  定义:比较此对象与指定对象的顺序


  返回:负整数、零或正整数。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。


@Test

public void test1() {

    // 测试sort方法

    List list = new ArrayList();


    list.add(2121);

    list.add(-1);

    list.add(21);

    list.add(0);

    list.add(45);

    // 降序

    Collections.sort(list, new Comparator() {

        @Override

        public int compare(Integer o1, Integer o2) {

            System.out.println(o2 - o1);

            return o2 - o1; // 此时o2-o1是大于0的

        }

    });

    System.out.println(list);//[-1, 0, 21, 45, 2121]

}



  对自定义对象的排序


  方法一:通过实现Comprable的compareTo方法进行排序


// 实现Comparable接口

class User implements Comparable{


    private String name;


    private Integer age;


    public User(String name, Integer age) {

        this.name = name;

        this.age = age;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public Integer getAge() {

        return age;

    }


    public void setAge(Integer age) {

        this.age = age;

    }


    @Override

    public int compareTo(User o) {


        //首先比较年龄,如果年龄相同,则比较名字

        int flag = this.getAge().compareTo(o.getAge());

        if (flag == 0) {

            return this.getName().compareTo(o.getName());

        } else {

            return flag;

        }

    }


    @Override

    public String toString() {

        return "User{" +

                "name='" + name + ''' +

                ", age=" + age +

                '}';

    }



测试方法


// 自定义对象的排序,比如对User对象按照年龄排序,再按照name排序

@Test

public void testSort() {

    User f1 = new User("tony", 19);

    User f2 = new User("jack", 16);

    User f3 = new User("tom", 80);

    User f4 = new User("jbson", 44);

    User f5 = new User("jason", 44);

    User f6 = new User("tom", 12);


    Listlist = new ArrayList();

    list.add(f1);

    list.add(f3);

    list.add(f4);

    list.add(f2);

    list.add(f5);

    list.add(f6);

    Collections.sort(list);


    for (User o : list) {

        System.out.println(o.getAge() + "-->" + o.getName());

    }

}


输出:


12-->tom

16-->jack

19-->tony

44-->jason

44-->jbson

80-->tom



copy方法


List dest = Arrays.asList(new Object[list.size()]);



@Test

public void testCopy(){

    List list = new ArrayList();


    list.add(2121);

    list.add(-1);

    list.add(21);

    list.add(0);

    list.add(45);


    //错误写法:此时dest集合为长度为0,报错IndexOutOfBoundsException: Source does not fit in dest

//        List dest = new ArrayList();

//        Collections.copy(dest,list);

//        System.out.println(dest.size());

//        System.out.println(dest);

    // 正确写法:先造一个值为null,长度为list长度的集合。再拷贝

    List dest = Arrays.asList(new Object[list.size()]);

    System.out.println(dest.size()); // 5

    Collections.copy(dest,list);

    System.out.println(dest);

}


以上就是动力节点java培训机构小编介绍的“Java集合中Collections工具类都有哪些”的内容,希望能够帮助到大家,更多精彩内容请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。


相关免费视频教程推荐


 javase—— Collection集合视频教程下载:http://www.bjpowernode.com/xiazai/2510.html



开班信息

同类文章

微信搜索“动力节点Java学院“或扫二维码

关注官方微信免费领学习资料

动力节点Java培训机构,行业口碑最好的Java培训机构。

立即抢名额