枚举

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);
                }
            }
        }
        
    }

}