hadoop学习序曲之java基础篇--javamap

-Collection<E>
    --->是一个单列的集合
    ------------------------
 * Map<K, V>
    map中需要存放两个元素
    一个是K:Key-->键
    一个是V:Value--->Value
    ----->map是一个双列的集合
    每一个K和V之间存在着关系:映射关系
    Map的特点:
        map的每一个对元素都是以键值对儿的形式存在的。map中的键是唯一的,只能通过键来唯一的获取值。
    Map中的常用的方法:
        1、增
            put(K key, V value) 
            putAll(Map<? extends K,? extends V> m) 
        2、删
            clear();
            V remove(Object key):移除掉Key对应的键值对,返回Key对应的Value 
        3、改
            put(K key, V value) 
        4、查
            get(Object key) 
            int size();
            values();
            --------------
            entrySet() *****
            keySet() *****
        5、判断:
            containsKey(Object key) 
            containsValue(Object value)
             isEmpty() 
        常用的子类
        ----HashTable:底层的数据结构是哈希表,K-V不可以存在null值,Hashtable是同步的 ,效率低,jdk1.0
        ----HashMap:底层的数据结构是哈希表,K-V可以存在null值,HashMap是不同步的 ,效率高,jdk1.2
        ----TreeMap:底层的数据结构是二叉树,如果要对我们的map进行排序,就是使用treemap,是按照我们的映射关系中的key来进行排序


Map中的两种取出元素的方式
 * ---- Set<K> keySet:
 *        获 取map中的所有的key组成一个集合Set,通过我们Set来进行操作,得到Iterator,迭代每一个元素(Key),然后在通过
 *         map.get(Key)获得对应的value
 * ----Set<Map.Entry<K,V>> entrySet:获取map中所有的k-v的映射关系==》Set,通过我们Set来进行操作,
 *     得到Iterator,迭代器的每一个元素都是一个映射关系的实例,通过实例提供的api(getKey,getValue)来获取我们map
 *     中的每一对儿键值对儿


Comparable和Comparator区别:
 *  在jdk的位置:
 *  Comparable是在java.lang包下的一个接口
 *  Comparator是在java.util包下的一个接口
 *     在哪里使用?
 *       如果要让我们的对象(集合元素)具备一个比较性,这个时候就需要用到了Comparable接口
 *   如果要让我们的集合能够比较集合中的元素,这时就需要使用Comparator
 *   ===》Comparable在我们的元素身上实现,Comparator在我们集合定义的时候作为比较器参数传入
 *  要复写的方法?
 *      实现Comparable接口,只需要复写其中的int compareTo(T t)即可
 *      使用Comparator接口,只需要复习其中的int compare(T t1, T t2)即可

可变参数
 * 使用可变参数的时候,必须要把可变参数放到我们参数列表的最后面
这个是编译不通过的,因为可变参数必须要放到我们参数列表的最后面,便于我们对参数进行解析
    public static int add1(int... arr, String str) {
        System.out.println(str);
        int sum = 0;
        for(int a : arr) {
            sum += a;
        }
        return sum;

jdk1.5之后出现的新特性——高级for循环,增强for循环
 * foreach语句的书写格式:
 * for(数据类型 变量名 : 要进行遍历的(Collection)集合或者数组) {
 *    获取变量,然后进行操作 
 * }
 * 要能够使用foreach,对象需要实现Iterable接口
 * 实际上foreach底层就是使用iterator来做的,只不过简化了我们的书写
 * foreach和我们的迭代器有啥区别?
 *     实际上foreach底层就是迭代器来做的,只不过是为了简化书写
 * foreach和我们普通for循环有啥区别?
 *     foreach无法操作角标,
 *  普通for循环是可以进行操作角标,
 *  如果在遍历的过程中需要用到角标或者需要++/--的操作,那么建议使用普通的for循环;反之,能用foreach就用foreach

packa/Student
packb/Studnet
import packa.Student;
import packb.Student;
class Test {
    void method() {
        new packa.Student();
    }
}
如果我们同时在一个class文件里面,引入两个不同包,但类名称相同的对象,在要创建这个相同类名的对象的时候,需要指定全类名加以区分
在进行静态导入的时候,方法重名的时候,需要我们加类型进行区分
java.util.Date;
java.sql.Date;
new java.util.Date();

你可能感兴趣的:(hadoop学习序曲之java基础篇--javamap)