java===枚举,Arrays,Collections

枚举

package 枚举;
/**
 * 枚举与Iterator用法相同,但是Iterator简化书写*/
import java.util.Enumeration;
import java.util.Vector;

public class Enum {

    public static void main(String[] args) {
        Vector<String> v1 = new Vector<String>();
        v1.add("a");
        v1.add("bb");
        v1.add("ccc");
        v1.add("dddd");
        Enumeration<String> en1=v1.elements();
        while(en1.hasMoreElements()){
            System.out.println(en1.nextElement());
        }

    }

}

Arrays:

package 容器工具类.Collections_Arrays;

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

public class ArraysDemo {

    public static void main(String[] args) {

        //demo_1();
        //demo_2();
        demo_3();

    }
    public static void demo_3() {
        HashMap<Integer, String> map1 = new HashMap<Integer,String>();
        map1.put(1, "a");
        map1.put(2, "a");
        map1.put(3, "c");
        map1.put(4, "d");
        for(Integer i:map1.keySet()){
            String value=map1.get(i);
            System.out.println(i+":"+value);
        }
//        for(map1.Entry<Integer,String> me:map1.entrySet()){
//        Integer Key = me.getKey();
//        String value = me.getValue();}
    }
    public static void demo_2(){
        int [] arr = {1,5,34,76,456};//new int[5];
        //二分查找  boolean不能用之外  其他都能用;
        System.out.println(Arrays.binarySearch(arr, 5));
        int [] ar=Arrays.copyOf(arr, 3);
        for (int i = 0; i < ar.length; i++) {
            System.out.print(ar[i]+",");
        }
        //数组转换成字符串
        System.out.println(Arrays.toString(arr));
        //重点:数组转成List集合  原因:集合方法更多,例如 contains indexOf .... 注意:数组长度固定所以增删方法是不可以使用的;
        //如果数组中的元素是对象,那么直接转成list元素,但是数组里面是基本类型数值,那么就将整个数组作为list的一个元素;
        List<int[]> list=Arrays.asList(arr);
        System.out.println(list);

    }
    public static void demo_1(){
        ArrayList<String> a1 = new ArrayList<String>();
        a1.add("abc1");
        a1.add("abc2");
        a1.add("abc3");
        a1.add("abc4");
        /*
         * for each:多用于迭代,不会用于元素操作;
         * for(类型 变量:单列集合|数组){
         *     System.out.println(变量);
         * }
         *
         * for(String a:a1){
         *     System.out.println(a);
         * }
         *
         * */
        //将集合转成数组  Collection的方法适用于set,list
        String[]arr=a1.toArray(new String [a1.size()]);
        for(String s1:arr){
            System.out.print(s1+",");
        }
    }

}

Collections:

package 容器工具类.Collections_Arrays;

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

import 比较器.comparator.ComparatorByLength;

public class CollectionsDemo {

    public static void main(String[] args) {
        demo_2();

    }
    public static void demo(){
        List<String> l1 = new ArrayList<String>();
        l1.add("aaaaaa");
        l1.add("bbbbb");
        l1.add("cccc");
        l1.add("dd");
        //排序
        Collections.sort(l1);
        System.out.println(l1);
        //Collections.sort(l1, new ComparatorByLength());
        //System.out.println(l1);
        mySort(l1,new ComparatorByLength());
        System.out.println(l1);
        //二分查找
        int index=Collections.binarySearch(l1, "dd",new ComparatorByLength());
        System.out.println("index="+index);
        //最值
        String max=Collections.max(l1);
        System.out.println("max="+max);
        String min = Collections.min(l1, new ComparatorByLength());
        System.out.println("min="+min);
        //替换
        Collections.replaceAll(l1, "dd", "nba");
        //原理: l1.set(l1.indexOf("dd"),"nba");
    }
    public static void demo_1(){
        //逆序
        /*
        TreeSet<String> t1 = new TreeSet<String>(new Comparator<String>(){
            public int compare(String s1,String s2){
                int temp = s2.compareTo(s1);
                return temp;
            }
        });
        */
        //TreeSet<String> t1 = new TreeSet<String>(Collections.reverseOrder());
        TreeSet<String> t1 = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));
        t1.add("ab");
        t1.add("acc");
        t1.add("bbcdd");
        t1.add("cbcv");
        System.out.println(t1);

    }
    public static void demo_2(){
        List<String> l1 = new ArrayList<String>();
        l1.add("aaaaaa");
        l1.add("bbbbb");
        l1.add("cccc");
        l1.add("dd");
        //全部替换、初始化某种元素
        System.out.println(l1);
        //Collections.fill(l1, "*");
        System.out.println(l1);
        //随机排序
        Collections.shuffle(l1);
        System.out.println(l1);

    }
    public static void demo_3(){
        //重点:将不同步的集合变成同步的
        /*
        Collections.synchronizedCollection(c);
        Collections.synchronizedList(list);
        Collections.synchronizedMap(m);
        Collections.synchronizedSet(s);
        原理:
        class MyCollections{
             public static List synList(List list){
                 return new MyList(list);
             }
             private class MyList{
            private static final Object lock = new Object();
                private List list;
                 MyList(List list){
                     this.list=list;
                 }
                 public boolean add(Object obj){
                     synchronized(lock){
                         list.add();
                     }
                 }
                  public boolean remove(Object obj){
                     synchronized(lock){
                         list.remove();
                     }
                 }
             }
        }

        */

    }
/**自己实现集合排序方法*/
    private static<T> void mySort(List<T> l1,Comparator<? super T> comp) {
        for(int x=0;x<l1.size()-1;x++){
            for(int y=x+1;y<l1.size();y++){
                if(comp.compare(l1.get(x), l1.get(y))>0){
                    //Collections.swap(l1, x, y);
                    T temp =  l1.get(x);
                    l1.set(x, l1.get(y));
                    l1.set(y, temp);//temp不能换成l1.get(x)原因是,之前已经把x位置的元素修改成了l1.get(y);
                }
            }
        }

    }

}
时间: 2024-10-11 22:09:27

java===枚举,Arrays,Collections的相关文章

Java容器---Arrays &amp; Collections工具类

1.Array & Arrays 与Collection & Collections区别 (1)Collection": 是一个接口,与其子类共同组成一个Collection集合框架: Collections: 是一个类,一个服务于集合的工具类, 提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. (2)Array:         提供了动态创建和访问 Java 数组的方法: Arrays:        用于操作数组的工具类,里面都是操作数组的静态方法.其中一个

Java Concurrency - Concurrent Collections

Data structures are a basic element in programming. Almost every program uses one or more types of data structures to store and manage their data. Java API provides the Java Collections framework that contains interfaces, classes, and algorithms, whi

Java 数组基础,java.util.Arrays

定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3?定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 java.utils.Arrays 类 参考文献: ? 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地

【Java】Arrays中之于int数组的方法,Integer数组与int数组

在java.util.*中,Arrays似乎很有用的样子,似乎用里面的方法就可以避免使用for循环要自己写对数组的查找.初始化.排序等方法了. 一.先说说Arrays中对整形数组真的有用的方法 1.首先是Arrays.toString() 一般,直接用System.out.println()打印数组,比如这样: int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 }; System.out.println(array); 出来的结果是一堆乱码: [Lja

深入理解Java枚举类型(enum)

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/71333103 出自[zejian的博客] 关联文章: 理解Java位运算 深入理解Java类型信息(Class对象)与反射机制 本篇主要是深入对Java中枚举类型进行分析,主要内容如下: 理解枚举类型 枚举的定义 枚举实现原理 枚举的常见方法 Enum抽象类常见方法 编译器生成的Values方法与ValueOf方法 枚举与Clas

Java数据结构学习—Collections类

java.util 类 Collections java.lang.Object java.util.Collections public class Collections extends Object 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成.它包含在 collection 上操作的多态算法,即"包装器",包装器返回由指定 collection 支持的新 collection,以及少数其他内容. 如果为此类的方法所提供的 colle

java数组与java.util.Arrays工具类

概念 Java中数组属于引用类型.数组使用场合较多,对于数组的操作具有一定重复性,例如:数组拷贝,转换字符串,转换成数组,排序等等.既然重复的操作与需求多,那么对于数组操作的支持就成了JDK中的一大需求.java.util.Arrays中提供了很多对数组操作的支持. System.arraycopy: 数组元素拷贝 public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int l

JAVA枚举操作(获取值,转map集合)

JAVA枚举相对来说比.NET的枚举功能强大,感觉就像是一种简化版的类对象,可以有构造方法,可以重载,可以继承接口等等,但不能继承类,JAVA枚举在实际开发中应用相当频繁,以下几个封装方法在实际开发中可能用到,希望对新手有些帮助. 首先,新建一个枚举接口,为保证所有继承此接口的枚举value及description一致,便于开发使用,枚举统一接口如下. public interface EnumCommon { public int getValue(); public String getDe

java 枚举常用操作

在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. Java代码 public enum Color { } JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强. Java代码 enum Signal { } public class TrafficLight { public void change() {