黑马程序员技术交流社区

标题: 集合——讨论 [打印本页]

作者: 高廷平    时间: 2012-8-30 11:51
标题: 集合——讨论
package Demo_Test;
import java.util.*;
public class Demo_Map {
public static void main(String[] args) {
  //HashMap的对象:hp
  HashMap hp=new HashMap();
  
  //添加对象
  hp.put(200, "高斯");
  hp.put(204, "赵平");
  hp.put(202, "张飞");
  hp.put(205, "刘备");
  
   
   Set set=hp.keySet();//构建所有KEY对象的集合
         //输出集合hp的内容
         Iterator it=set.iterator();
   while(it.hasNext())
       {
       Object obj=it.next();
       System.out.print(obj+" : ");
       System.out.println(hp.get(obj));
       }
  System.out.println("----------------------");
            for(Object obj:hp.keySet())
     {
         Object ob=hp.get(obj);
  System.out.println(obj+" : "+ob);
     }

}

}
/*
* 输出结果:
* 205 : 刘备
204 : 赵平
200 : 高斯
202 : 张飞
----------------------
205 : 刘备
204 : 赵平
200 : 高斯
202 : 张飞
* 上述两种方式都是借助于KeySet和get方法输出的
* 本质上没有多大区别。
* 请问各位:还有什么别的方式吗?
* */


作者: 李志群    时间: 2012-8-30 12:38
还有就是EntrySet(); Map集合取出元素的两种方式 第一种就是您说的那个 ,第二种就是EntrySet();
两种方法的共同特点都是将Map集合转成Set集合进行取出,
而两种方法取出的方式不同而已,
KeySet()方法: 打个比喻 假如有一个小两口, 你知道丈夫是谁,那你一定可以是通过丈夫来找到妻子了。
EntrySet()方法:也打个比喻,加入 你要找一对夫妻, 你知道这一对夫妻的结婚证了 你是不 也是可以找到丈夫 和妻子两个元素哦。
               呵呵  这个,您要自己查阅下API文档 一定很块就总结出来的哦呵呵,
作者: 李志群    时间: 2012-8-30 12:45
public class LinkedHashMapDemo {
/**
  * @param args
  */
public static void main(String[] args) {
  HashMap<Integer, String> hm = new LinkedHashMap<Integer, String>();
  hm.put(5, "wangwu");
  hm.put(1, "zhaoliu");
  hm.put(9, "zhouqi");
  hm.put(4, "lisi");
  
//  Set<Integer> keySet = hm.keySet();
  for(Integer i : hm.keySet()){
   String value = hm.get(i);
   System.out.println(i+":"+value);
  }
  
  for(Map.Entry<Integer,String> me : hm.entrySet()){
   Integer key = me.getKey();
   String value = me.getValue();
   System.out.println(key+"::::"+value);
  }
  /*Iterator<Map.Entry<Integer,String>> it = hm.entrySet().iterator();  
  while(it.hasNext()){
   Map.Entry<Integer,String> me = it.next();
   Integer key = me.getKey();
   String value = me.getValue();
   System.out.println(key+":"+value);
  }*/
}
}

EntrySet图解.jpg (68.75 KB, 下载次数: 17)

EntrySet

EntrySet

keySet图解.jpg (42.57 KB, 下载次数: 20)

keySet

keySet

作者: 高廷平    时间: 2012-8-30 13:10
{:soso_e179:}
作者: 陈莹    时间: 2012-8-30 15:26
取得Map集合中的内容有两种方法,一种是你所用的keySet,它只获得的是Map集合中的键的集合,也就是说返回此映射中包含的键的 Set 视图。
另一种方法是entrySet,它能返回Map集合中的键和值,也就是 返回此映射中包含的映射关系的 Set 视图。
举个例子:
你们班30个学生,每个学生都有学号,姓名,那么学号是键,姓名是值
205 : 刘备
204 : 赵平
200 : 高斯
202 : 张飞
这样,你用keySet方法返回的就是学号,而用entrySet获得的就是学号—姓名的映射关系。
你的程序要是用entrySet方法获取元素的话,代码为:
Set<Map.Entry<Integer,String>> entryset = hp.entrySet();               
Iterator<Map.Entry<Integer,String>> it  = entryset.iterator();
while(it.hasNext())
{
    Map.Entry<Integer,String> me = it.next();
    int id = me.getKey();
    String name = me.getValue();
    System.out.println(id+":"+name);
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2