博客信息

集合框架工具类(Collections、Arrays)

发布时间:『 2019-05-15 02:13』  博客类别:java基础  阅读(1011)

Collections


常用方法

根据自然排序接口以及比较器接口给集合进行排序

sort(List<T> list) ;

sort(List<T> list, Comparator<? super T> c) ;

二分搜索法搜索指定元素的位置(如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)

binarySearch(List<? extends Comparable<? super T>> list, T key) ;

binarySearch(List<? extends T> list, T key, Comparator<? super T> c) ;

替换集合中的所有元素

fill(List<? super T> list, T obj) ;

替换集合中的某一个元素;

replaceAll(List<T> list, T oldVal, T newVal) ;

反转元素顺序

reverse(List<?> list);

 强行逆转了排序(ComparableComparator)规则

reverseOrder() ;

reverseOrder(Comparator<T> cmp) ;

指定置换与随机置换(扑克牌)

swap(List<?> list, int i, int j);

shuffle(List<?> list) ;


小李飞刀_集合框架

Arrays

数组转成集合有什么好处?

小李飞刀_集合框架


数组转成集合后会有什么限制?

小李飞刀_集合框架


数组转成集合,内部元素对象注意点

小李飞刀_集合框架


1、集合转成数组注意点,转成后数组长度问题

2、为什么要将集合转成数组

小李飞刀_集合框架


相关代码

package com.javaxl;

import java.util.*;

/**
 * @author 小李飞刀
 * @site www.javaxl.com
 * @company
 * @create  2019-05-15 10:28
 */
public class CollectionsDemo {
    public static void main(String[] args) {
//        method_1(args);
//        method_reverseOrder(args);
//        method_3(args);
        method_4(args);

    }

    /**
     * 数组转集合    为了更方便的操作集合中的元素
     *  需要注意对象的类型是引用型还是基本数据类型,转集合的结果会不一样
     * @param args
     */
    public static void method_3(String[] args) {
        String[] arr1 = {"1","3"};
        Integer[] arr2 = {1,3};
        int[] arr3 = {1,3};

        List<String> list1 = Arrays.asList(arr1);
        List<Integer> list2 = Arrays.asList(arr2);
        List<int[]> list3 = Arrays.asList(arr3);//注意这里的集合泛型


    }

    /**
     * 集合转数组
     *      若是集合中的元素只想提供查看功能,不提供增删改功能
     * @param args
     */
    public static void method_4(String[] args) {
        ArrayList<String> al = new ArrayList<String>();
        al.add("java01");
        al.add("java02");
        al.add("java03");
//        Object[] objs = al.toArray();//[java01, java02, java03]
//        String[] objs = al.toArray(new String[0]); // [java01, java02, java03]
        String[] objs = al.toArray(new String[6]);
        System.out.println(Arrays.toString(objs));
    }

    /**
     * sort、binarySearch、fill、replaceAll。reverse
     * @param args
     */
    public static void method_1(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaaaaddaa");
        list.add("ccccccdb");
        list.add("cbcc");
        list.add("cccc");
        list.add("a1234");

        System.out.println(list);//[aaaaaddaa, ccccccdb, cbcc, cccc, a1234]
//        自然排序
        Collections.sort(list);
        System.out.println(list);//[a1234, aaaaaddaa, cbcc, cccc, ccccccdb]
        Collections.sort(list,new CollectionsDemo_String_Comp());
        System.out.println(list);//[cbcc, cccc, a1234, ccccccdb, aaaaaddaa]

//        System.out.println(Collections.binarySearch(list, "ccccccdb"));//3  jdk1.8有所改变

//        Collections.fill(list,"vvv");//[vvv, vvv, vvv, vvv, vvv]

        Collections.replaceAll(list,"cccc","www");
        System.out.println(list);//[cbcc, www, a1234, ccccccdb, aaaaaddaa]

        Collections.reverse(list);
        System.out.println(list);//[aaaaaddaa, ccccccdb, a1234, www, cbcc]

        Collections.swap(list,1,2);
        System.out.println(list);//[aaaaaddaa, a1234, ccccccdb, www, cbcc]

        Collections.shuffle(list);
        System.out.println(list);//随机变更两个元素

    }

    public static void method_reverseOrder(String[] args) {
//        TreeSet<String> list = new TreeSet<>();//[a1234, aaaaaddaa, cbcc, cccc, ccccccdb]
        TreeSet<String> list = new TreeSet<>(Collections.reverseOrder());//[ccccccdb, cccc, cbcc, aaaaaddaa, a1234]
//        TreeSet<String> list = new TreeSet<>(new CollectionsDemo_String_Comp());//[cbcc, cccc, a1234, ccccccdb, aaaaaddaa]
//        TreeSet list = new TreeSet<>(Collections.reverseOrder(new CollectionsDemo_String_Comp()));//[aaaaaddaa, ccccccdb, a1234, cccc, cbcc]
        list.add("aaaaaddaa");
        list.add("ccccccdb");
        list.add("cbcc");
        list.add("cccc");
        list.add("a1234");

        System.out.println(list);//[ccccccdb, cccc, cbcc, aaaaaddaa, a1234]


    }

}

/**
 * 从短到长,同等长度字符串自然排序
 */
class CollectionsDemo_String_Comp implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {
        int num = o1.length() - o2.length();
        if(num == 0)
            return o1.compareTo(o2);
        return num;
    }
}





关键字:     Java基础       集合框架       工具类  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有