• 集合工具类:collections


    collection与collections的关系?

    public class Collectionsextends Object

    collection与collections没有直接的关系,但是与集合的各个接口都有操作的方法支持。

    1,验证空集合的操作。

    static <T> List<T>  emptyList() 返回空的列表(不可变的)。

    代码:

    package 类集;
    import java.util.Collections;
    import java.util.List;
    import java.util.Set;
    public class test1{
        public static void main(String args[]){
            List<String> allList = Collections.emptyList() ;    // 返回空的 List集合
            Set<String> allSet = Collections.emptySet() ;    // 返回空的 List集合
            allList.add("Hello") ;    // 加入数据
        }
    };

    操作结果:

    Exception in thread "main" java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)
        at 类集.test1.main(test1.java:9)

    发现此时添加不了数据。

    collections提供了专门的 添加操作。

    static <T> boolean  addAll (Collection<? super T> c, T... elements)   将所有指定元素添加到指定 collection 中。 

    使用了可变数量的参数,可以输入各种类型的数据

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            
            List<String> all = new ArrayList<String>() ;   
            Collections.addAll(all,"MLDN","LXH","mldnjava") ;  //给 ALL 加入各种类型数据
            Iterator<String> iter = all.iterator() ;
            while(iter.hasNext()){
                System.out.print(iter.next() + "、") ;
            }
        }
    };

    输出结果:

    MLDN、LXH、mldnjava、

    反转操作:

    static void reverse(List<?> list)   反转指定列表中元素的顺序。 

    代码:

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            
            List<String> all = new ArrayList<String>() ;    // 返回空的 List集合
            Collections.addAll(all,"MLDN","LXH","mldnjava") ;
            Collections.reverse(all) ;    // 内容反转
            Iterator<String> iter = all.iterator() ;
            while(iter.hasNext()){
                System.out.print(iter.next() + "、") ;
            }
        }
    };

    二分检索操作

    static <T> int  binarySearch(List<? extends T> list, T key, Comparator<? super T> c)     使用二分搜索法搜索指定列表,以获得指定对象。 

    返回的结果是位置信息

    代码:

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all = new ArrayList<String>() ;    // 返回空的 List集合
            Collections.addAll(all,"MLDN","LXH","mldnjava") ;
            int point = Collections.binarySearch(all,"LXH") ;    // 检索数据
            System.out.println("检索结果:" + point) ;
        }
    };

    结果:

    检索结果:1

    替换内容操作

    static <T> boolean  replaceAll(List<T> list, T oldVal, T newVal)       使用另一个值替换列表中出现的所有某一指定值。 

    返回结果是bool类型,所以可以用在if判断语句中来判断是否替换成功。

    代码:

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all = new ArrayList<String>() ;    // 返回空的 List集合
            Collections.addAll(all,"MLDN","LXH","mldnjava") ;
            if(Collections.replaceAll(all,"LXH","李兴华")){// 替换内容
                System.out.println("内容替换成功!") ;
            }
            System.out.print("替换之后的结果:") ;
            System.out.print(all) ;
        }
    };

    操作结果:

    内容替换成功!
    替换之后的结果:[MLDN, 李兴华, mldnjava]

    内容排序操作

    static <T extends Comparable<? super T>>  void  sort(List<T> list)      根据元素的自然顺序 对指定列表按升序进行排序。 

    代码:

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all = new ArrayList<String>() ;    // 返回空的 List集合
            Collections.addAll(all,"1、MLDN","3、mldnjava","2、LXH") ;
            Collections.addAll(all,"B、www.mldn.cn") ;
            Collections.addAll(all,"A、www.mldnjava.cn") ;
            System.out.println("排序之前的集合:" + all) ;
            Collections.sort(all) ;
            System.out.println("排序之后的集合:" + all) ;
        }
    };

    返回结果:

    排序之前的集合:[1、MLDN, 3、mldnjava, 2、LXH, B、www.mldn.cn, A、www.mldnjava.cn]
    排序之后的集合:[1、MLDN, 2、LXH, 3、mldnjava, A、www.mldnjava.cn, B、www.mldn.cn]

    内容交换操作:

    static void swap(List<?> list, int i, int j)   在指定列表的指定位置处交换元素。 

    根据交换的内容的位置进行交换。

    代码:

    package 类集;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    public class test1{
        public static void main(String args[]){
            List<String> all = new ArrayList<String>() ;    // 返回空的 List集合
            Collections.addAll(all,"1、MLDN","2、LXH","3、mldnjava") ;
            System.out.println("交换之前的集合:" + all) ;
            Collections.swap(all,0,2) ;
            System.out.println("交换之后的集合:" + all) ;
        }
    };

    结果:

    交换之前的集合:[1、MLDN, 2、LXH, 3、mldnjava]
    交换之后的集合:[3、mldnjava, 2、LXH, 1、MLDN]

    总结:

    为了方便类集的操作,提供了collections类。与collection没有直接关系。 

    只是对所有的集合接口有所支持而已

  • 相关阅读:
    一些面试题(2)
    poj1102 7段数码管
    一些面试题(3)
    poj百练2737大整数除法
    枚举
    poj2244 约瑟夫环
    [Craftor原创]精通ModelSim脚本(1)
    [Craftor原创]带FIFO的UART收发器设计
    继电器的一些基本术语
    Every success is a creation for me
  • 原文地址:https://www.cnblogs.com/alsf/p/6254429.html
Copyright © 2020-2023  润新知