集合框架——Map集合

集合之Map集合。
集合是一个容器。和比较来看集合的特点。数组有什么特点? 1.有顺序 2.定长 3.类型单一
集合特点: 1.有顺序也可以没顺序  2.集合长度可以随着元素的增加而增加  3.集合中可以装入任何Object
java中的集合类都在java.util包下,java中的集合元素全是Object类型的。  


集合体系图


Collection——List          
List——1,LinkedList                                            
2,ArrayList                                       
3,Vector——Stack       
Collection——Set
Set——1,HashSet——LinkedHashSet  
                       2,TreeSet 
Map——1,HashMap
   ——2,TreeMap


Map集合与Collection集合的区别
1.Map是双列集合    Collection是单列集合
2.Map集合存储是使用put方法——————Collection存储使用的是add方法.
3.Map集合不能直接使用迭代器遍历.
Map——1,HashMap                                     
2,TreeMap     
Map为双列集合,它是采用key-value映射方式存储的。
|-----HashMap  底层使用hash表实现,它允许null值,null键,线程不安全。
HashMap使用元素的hashCode与equals方法来保证key的唯一。
|------LinkedHashMap
它保证了装入时的key的顺序与取出时key的顺序一样。
|-----Hashtable  它与HashMap的区别,除了不能null值,null键,线程安全。其它一样。
|------Properties
  它是对配置文件进行映射的。
  在早期开发中,经常的使用这样原的文件进行配置。
|-----TreeMap   底层实现二叉树,它线程不安全。
                它使用 自然顺序与比较器保证 key的唯一.
它的key值不能重复。   
Map集合的遍历操作
1.使用keySet
1.通过Map的keySet方法得到的是key的Set视图.
2.通过Iterator对Set集合进行迭代,将Map中的所有的key得到了
3.通过Map的get方法,根据key得到对应的value.
2.使用entrySet
1.通过Map的entrySet方法得到的是key-value(其实就是Entry类型)映射的Set视图
2.通过Iterator得到Set集合中的所有的Entry对象.
3.通过Entry对象的getKey  getValue方法得到Map集合中的所有的key与value.                          
/*
Map的方法
*/
import java.util.*;
class  Demo1
{
public static void main(String[] args) 
{
method5();
}
//Map 中的put方法
public static void method1(){
Map<String,String> map=new HashMap<String,String>(); //创建一个Map集合


//向信中添加元素
System.out.println(map.put("小三","人"));
System.out.println(map.put("豆豆","南极企鹅"));
System.out.println(map.put("豆豆","北极企鹅"));




System.out.println(map); //打印Map对象
}
//clear  size
public static void method2(){
Map<String,String> map=new HashMap<String,String>(); //创建一个Map集合


//向信中添加元素
System.out.println(map.put("小三","人"));
System.out.println(map.put("豆豆","南极企鹅"));
System.out.println(map.size());
map.clear();
System.out.println(map.size());
}


//containsKey  containsValue
public static void method3(){
Map<String,String> map=new HashMap<String,String>(); //创建一个Map集合


//向信中添加元素
System.out.println(map.put("小三","人"));
System.out.println(map.put("豆豆","南极企鹅"));

System.out.println(map.containsKey("小三"));


System.out.println(map.containsValue("男人"));
}
//get
public static void method4(){
Map<String,String> map=new HashMap<String,String>(); //创建一个Map集合


//向信中添加元素
System.out.println(map.put("小三","人"));
System.out.println(map.put("小二","人"));
System.out.println(map.put("豆豆","南极企鹅"));




//根据key获得value
String value=map.get("豆豆1");
System.out.println(value);
}
//remove
public static void method5(){
Map<String,String> map=new HashMap<String,String>(); //创建一个Map集合
//向信中添加元素
System.out.println(map.put("小三","人"));
System.out.println(map.put("小二","人"));
System.out.println(map.put("豆豆","南极企鹅"));
System.out.println(map.remove("小二二"));
System.out.println(map);
}
}   
/*
举例——向Map集合中存储10对元素
要求:key是在0-100内随机     int   ran.nextInt(100)
value是在a-z之间随机       String   String.valueOf((char)(ran.nextInt(26)+'a'));
     提供两种遍历方式,keySet和entrySet。有用到泛型。
*/
import java.util.*;
class Demo2 
{
public static void main(String[] args) 
{
method2();

}


//使用Map中的keySet进行遍历
public static void method1(){
//将集合中添加元素
Map<Integer,String> map=new HashMap<Integer,String>();
Random ran=new Random();

while(true){
int key=ran.nextInt(100); //随机得到100以内的数
String value=String.valueOf((char)(ran.nextInt(26)+'a'));//随机得到a-z字符串
map.put(key,value);
if(map.size()==10){
break;
}
}
System.out.println(map);
//使用keySet遍历集合
//1.得到Map集合中的所有的key的Set视图
Set<Integer> set=map.keySet(); //set中存储的就是map集合中的所的key值
//2.对set集合进行迭代,将map中的所有的key得到
for(Iterator<Integer> it=set.iterator();it.hasNext();){
int key=it.next();
//3.根据key得到value 使用的是Map中的get方法
String value=map.get(key);
System.out.println(key+"  "+value);
}
}
//使用entrySet方法遍历Map集合
public static void method2(){
//向Map集合中添加元素 key--Integer   value--String
Map<Integer,String> map=new HashMap<Integer,String>();
Random ran=new Random();

while(true){
int key=ran.nextInt(100); //随机得到100以内的数
String value=String.valueOf((char)(ran.nextInt(26)+'a')); //随机得到a-z字符串
map.put(key,value);
if(map.size()==10){
break;
}
}
//使用entrySet遍历Map集合


Set<Map.Entry<Integer,String>> set=map.entrySet(); //得到一个set集合,这个集合中装入的元素是Entry类型的,它里面封装的是一对Map的元素
//使用迭代器将set集合中的元素迭代出来
for(Iterator<Map.Entry<Integer,String>> it=set.iterator();it.hasNext();){
Map.Entry<Integer,String> obj=it.next();
int key=obj.getKey();
String value=obj.getValue();
System.out.println(key+"  "+value);
}
}
}             
今后开发中,集合分析过程:
        1.判断是存储单列还是双列,这样就可以选择Collection还是Map
2.1 Collection——————如果没有要求,先List,List下首选ArrayList
     ——————如果要求不重复  Set,Set下首先HashSet.
     ——————对于LinkedList,TreeSet,它们的使用要根据上体的特性。
2.2 Map——————首选HashMap,如果要求进行排序,TreeMap.                                   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值