zoukankan      html  css  js  c++  java
  • [黑马程序员] 集合框架2——Map系 & 集合工具类(Collections、Arrays)

    ---------------------- ASP.Net+Android+IO开发.Net培训、期待与您交流! ----------------------

    0. 集合框架按其所实现的接口, 大致能分成Collection系 和Map系. 


    1. Map集合: 存储键值对, 且要保证键的唯一性. 


    2. Map与Collection的区别: 

    • Map与Collection在集合框架中属并列存在 
    • Map存储的是键值对
    • Map存储元素使用put方法,Collection使用add方法
    • Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
    • Map集合中键要保证唯一性
    • * Map没有迭代器. 

    3. Map的共性方法:
    • 添加 
    • put(K key, V value) 
    • putAll(Map<? extends K,? extends V> m)
    • 删除
    • clear() 
    • remove(Object key)
    • 判断
    • containsValue(Object value) 
    • containsKey(Object key) 
    • isEmpty()
    • 获取
    • get(Object key) 
    • size() 
    • values() 
    • * Set<Map.Entry<k, v>> entrySet: 将map集合中的映射关系存入到set集合中, 而这个关系的数据类型就是Map.Entry. (entry, 中文"条目"的意思. ) 
    • keySet(): 将map中所有的键存入到Set集合. 因为set具备迭代器, 所以可以通过迭代取出所有的键, 然后用get方法取出所有的值. 


    4. entrySet()方法示例:

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    
    public class MapDemo2 {
    
    	public static void main(String[] args) {
    		
    		Map<String, String> map = new HashMap<String, String>();
    		
    		map.put("02", "zhangsan2");
    		map.put("03", "zhangsan3");
    		map.put("01", "zhangsan1");
    		map.put("04", "zhangsan4");
    
    		Set<Map.Entry<String, String>> entrySet = map.entrySet();
    		
    		Iterator<Map.Entry<String, String>> it = entrySet.iterator();
    		
    		while(it.hasNext())
    		{
    			Map.Entry<String, String> me = it.next();
    			String key = me.getKey();
    			String value = me.getValue();
    			
    			System.out.println(key+":"+value);
    		}
    	}
    
    }
    


    5. Map的实现类
        |-- Hashtable: 底层是哈希表数据结构. 不能存入null键和null值. 线程安全. 
        |-- HashMap: 底层是哈希表数据结构. 能存入null键和null值. 线程不安全. 
        |-- TreeMap: 底层是二叉树数据结构. 线程不安全. 可以用于给map集合中的键经进行排序. 


    6. * Map与Set很像, 因为, Set底层就是使用了Map集合. 


    7. TreeMap: 与TreeSet类似, 可以按key进行排序. 


    8. 工具类java.util.Collections和java.util.Arrays的作用: 

    • Collections: 对集合进行查找. 
      取出集合中的最值. 
      对List集合进行排序. 
      等.. 
    • Arrays: 将数组转成List集合. 
      对数组进行排序. 
      对数组进行二分查找. 
      等..

    9. Collections的"一些"方法:
    •  public static <T> void fill(List<? super T> list,T obj): 填充. 将list的所有元素改为obj. 
    • reverse(list): 原位反转列表. 
    • * reverseOrder方法返回一个比较器的反序比较器. 
    • * public static <T> Collection<T> synchronizedCollection(Collection<T> c): 返回相应的同步的集合. 
      public static <T> Set<T> synchronizedSet(Set<T> s)等, 这个有一系列的...

    ===============下面是JDK1.5新特性=========================
    10. 增强for循环: for(集合中元素的类型, 集合){}, 相当于对集合进行遍历. 
    建议遍历数组时使用传统for, 因为可定义脚标. 

    11. * 可变参数: 起始就是一种数组参数的简写形式. 不用每次都手动建立数组对象, 只要将要操作的元素作为参数传递即可, 隐式地将这些参数封装成了数组. 

    • 格式: void show(int... a){}
    • 可变参数一定要定义在参数列表的最后. 
    • 因为是隐式封装成数组的, 所以直接传入个数组也行. 例子: 
      class Test2
      {
              public static void main(String [] args)
              {			
              	int[] arr = {1,2,3,7};
              	show(arr);   	//传个数组
              }
      
              public static void show(int... a)
              {
              	for(int x: a)
              	{
              		System.out.println(x);
              	}
              }
      }


    12. * 静态导入: 例如: import static java.util.Arrays.*; ---->>导入Arrays这个类中的所有静态成员. (有重名时还是要指定所属的对象或类.)
    import static java.lang.System.*;		//导入System类中的所有静态成员. 
    
    public class StaticImport extends Object {
    
    	public static void main(String[] args) {
    		out.println("haha");		
    
    	}
    


    ---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

    详细请查看:http://edu.csdn.net



  • 相关阅读:
    数据库概念相关
    JavaWeb基础知识总结
    MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
    MyBatis学习总结(一)——MyBatis快速入门
    [源码解析]HashMap和HashTable的区别(源码分析解读)
    MyBatis学习总结(三)——优化MyBatis配置文件中的配置
    MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
    MyBatis学习总结(五)——实现关联表查询
    MyBatis学习总结(六)——调用存储过程
    MyBatis学习总结(七)——Mybatis缓存
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3148184.html
Copyright © 2011-2022 走看看