JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)

JAVA基础学习之 
Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MainDemo {

    public static void main(String[] args) {
        // Map集合使用
        //MapUser();

        /*
         * 泛型 运行时,会将泛型去掉,生成的class文件中是不带泛型的,这个称为泛型的擦除 为什么擦除呢?是为了兼容运行的类加载器。 泛型限定 ?
         * extends E 接收E类型或者E的子类型对象。上限,存储元素的时候使用上限 ? super E
         * 接收E类型或者E的父类型。下限,获取元素的时候使用下限 public void printCollection(Collection<?
         * extends Person> collection) 通配符 public void
         * printCollection(Collection<?> collection)
         */

        // 集合框架工具类使用
        CollectionUtilUser();
        
        /*
         * Arrays.toString(array);//数组toString[2,3,4]
         */
        List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
        System.out.println(stooges);// [Larry, Moe, Curly]
        
        /*
         * 如果数组中的元素是对象,那么转成集合时,直接将    数组中的元素    作为集合中的元素存储
         * 如果数组中的元素是基本类型数组,那么会将该           数组                     作为集合中的元素进行存储
         */
        int[] array = { 1, 3, 4 };
        List<int[]> list = Arrays.asList(array);//将数组进行集合存储
        System.out.println(list);// [[I@4aa0b07b]
        Integer [] array1 = { 1, 3, 4 };
        List<Integer> integers = Arrays.asList(array1);//将数组中的元素进行集合存储
        System.out.println(integers);// [1, 3, 4]
        
        Integer [] integers2 = integers.toArray(new Integer[integers.size()]);//集合转换为数组
        System.out.println(Arrays.toString(integers2));
        
        //可变参数
//        public static String Params(int... params){
//            return  Arrays.toString(params);
//        }
//        System.out.println(Params(1,2,3));//int... 就是int[]
        
    }
    
    

    /**
     * 集合框架工具类使用
     */
    public static void CollectionUtilUser() {
        /*
         * Collections.sort(list);排序
         * Collections.sort(list,CompareByStringLength);自定义对象 实现Comparator接口进行比较
         * Collections.binarySearch(list, key)//折半查找,要先排序,然后再查询,查询list集合中值为key的索引,找不到返回负数
         * Collections.max(list);//集合中最大值
         * Collections.reverse(list);//反转集合
         * Collections.replaceAll(list, oldVal, newVal);
         * Collections.shuffle(list);//随机集合中的元素顺序
         * Collections.synchronizedCollection(collection);将非同步集合转为同步集合
         * Collections.synchronizedList(list);
         * Collections.synchronizedMap(m);
         * Collections.synchronizedSet(s);
         */
    }

    /**
     * Map集合使用
     */
    public static void MapUser() {
        /*
         * Map集合中存储的就是键值对 常用方法: value
         * put(key,value)存储value,返回前一个和key关联的值,如果没有相同的key,返回null void clear()
         * value remove(key) boolean containsKey(key) boolean
         * containsValue(value) boolean isEmpty() value
         * get(key)通过键获取值,如果没有改键,返回null int size()
         */

        /*
         * 根据键获取值
         */
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "a");
        map.put(2, "b");
        map.put(3, "c");
        // 第一种方式
        Set<Integer> set = map.keySet();
        // Collection<String> collection = map.values();
        for (Integer integer : set) {
            System.out.println(integer + ":" + map.get(integer));
        }
        // 第二种方式
        Set<Entry<Integer, String>> entrySet = map.entrySet();
        for (Entry<Integer, String> entry : entrySet) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

        /*
         * Map常用的子类: Hashtable:内部结构是哈希表,是同步的,不允许null作为键,null作为值
         * HashMap:内部结构是哈希表,不是同步的,允许null作为键,null作为值。
         * TreeMap:内部结构是二叉树,不是同步的,可以对Map集合中的键进行排序
         * HashMap的子类LinkedHashMap:存的时候和取得元素的位置顺序相同
         */

        /*
         * List和Set集合框架什么时候使用 
         * 如果需要唯一:Set 
         *                 需要指定顺序:TreeSet 
         *                  但是想要一个和存储一致的顺序:LinkedHashSet 
         *                     不需要: HashSet
         *              不需要: List 
         *                 需要频繁增删:LinkedList 
         *                     不需要:ArrayList
         */

    }

}
JAVA基础学习之 
Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)

JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)

上一篇:POJ 2983 Is the Information Reliable?(差分约束系统)


下一篇:Chrome pig toolebox 不能使用的一些问题