A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dengwenjing58 中级黑马   /  2015-12-5 14:11  /  3707 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
1.         Map集合的遍历方式?

17 个回复

倒序浏览
有两种遍历方式,
一种是通过keySet方法获取键的集合,遍历键的集合,在通过get方法获取传入键获取值。
一种是entryset方法获取键值对对象的集合,在遍历获取的集合
回复 使用道具 举报
两个  遍历方式都必须会哦 ,如果不会写的话 可以去看看视频哦
回复 使用道具 举报
1        //创建集合对象
                HashMap<String,String> hm=new HashMap<String, String>();
               
                //创建并添加元素
                hm.put("it001", "刘备");
                hm.put("it002","曹操");
                hm.put("it003","孙权");
                hm.put("it004", "乔布斯");
               
                //遍历,第一种键找值
                Set<String> set=hm.keySet();
                for(String key:set){
                        String values=hm.get(key);
                        System.out.println(key+"--"+values);
                }
                //第二种键值对对象找键和值
                Set<Map.Entry<String, String>> set2=hm.entrySet();
                for(Map.Entry<String, String> me:set2){
                        String key=me.getKey();
                        String values=me.getValue();
                        System.out.println(key+"--"+values);
                }
               
回复 使用道具 举报
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Map<String, Integer> map = new HashMap<>();
                Integer i1 = map.put("张三", 23);
                Integer i2 = map.put("李四", 24);
                Integer i3 = map.put("王五", 25);
                Integer i4 = map.put("赵六", 26);
                /*
                 * Set<String>set=map.keySet();
                 * Iterator<String>it=set.iterator();
                 * while(it.hasNext()) {
                 *  String key =it.next();
                 *  Integer value=map.get(key);
                 * System.out.println(key+"="+value); }
                 */
                /*
                 * for (String key : map.keySet()) {
                 * System.out.println(key+""+map.get(key)); }
                 */
                /*Set<Map.Entry<String, Integer>> set = map.entrySet();
                Iterator<Map.Entry<String, Integer>> it = set.iterator();
                while (it.hasNext()) {
                        Map.Entry<String, Integer> en = it.next();
                        System.out.println(en.getKey() + en.getValue());
                }*/
                for (Map.Entry<String, Integer>en : map.entrySet()) {
                        System.out.println(en.getKey()+"="+en.getValue());
                }
        }
希望能帮到你!
回复 使用道具 举报
Map<String, String> map = new HashMap<String, String>();
                map.put("tom", "23");        //向map中添加数据
                map.put("Jerry", "233");
               
                //第一种方式
                //获取map集合中所有键的set集合
                Set<String> set = map.keySet();
                Iterator<String> it = set.iterator();
               
                //遍历
                while(it.hasNext()){
                       
                        String key = it.next();                //获取key
                        String value = map.get(key);        //根据key获取value
                        System.out.println(key + " : " +value);
                }
               
                //第二种方式
                //将Map中的映射关系,存到set中
                Set<Map.Entry<String, String>> entries = map.entrySet();
               
                Iterator<Map.Entry<String, String>> iterator = entries.iterator();
               
                while(iterator.hasNext()){
                        Map.Entry<String, String> en = iterator.next();
                        String key = en.getKey();
                        String value = en.getValue();
                       
                        System.out.println(key + " : " + value);
                }
回复 使用道具 举报
Weidan 中级黑马 2015-12-7 19:22:06
7#
楼上都说完了...
回复 使用道具 举报
fzh945 中级黑马 2015-12-7 22:43:09
8#
两种,看视频就有
回复 使用道具 举报
Map是一种以键值对的形式存在的集合,其中每个键映射到一个值,几乎所有通用 Map 都使用哈希映射。位于java.util包中。其子类有HashMap,TreeMap。HashMap缺省的情况下是线程非安全的;当多线程访问时可能需要提供同步机制,key和value的值允许为null,键值允许重复,没有顺序。


          普通JAVA类遍历Map集合

          Map map=new HashMap();

map.put("a", "1");

  map.put("b", "2");

map.put("c", "3");



map.keySet();//键集合

map.values();//值集合

map.entrySet();//键值集合



//遍历键,通过键取值

Set set = map.keySet();

for (Object key : set) {

System.out.println("键:"+key+"  值:"+map.get(key));

}

//遍历键集合

Iterator it=map.keySet().iterator();

while(it.hasNext()){

System.out.println("键:"+it.next());

}

//遍历键值集合

Iterator it2=map.entrySet().iterator();

while(it2.hasNext()){

System.out.println(it2.next());

}



使用EL表达式遍历Map集合

   <%

     Map map=new HashMap();

map.put("a", "1");

map.put("b", "2");

map.put("c", "3");

pageContext.setAttribute("map",map);

     %>

     <c:forEach items="${map}" var="m">

     键:${m.key}

     值:${m.value}

     </c:forEach>

使用EL表达式遍历Map集合(值存放的是对象)



<%

    Person p=new Person();

    p.setAddress("aa");

    p.setName("aa");

        Person p2=new Person();

    p2.setAddress("bb");

    p2.setName("bb");



        Person p3=new Person();

    p3.setAddress("cc");

    p3.setName("cc");

    Map map=new HashMap();

map.put("a", p);

map.put("b", p2);

map.put("c", p3);

pageContext.setAttribute("map",map);

     %>

     <c:forEach items="${map}" var="m">

     ${m.key}

     ${m.value.name} //m.value取得的是对象的内存地址,所以可以直接用m.value.name(name为Person对象的属性)

     </c:forEach>





使用struts标签<logic:iterate />遍历



<%

    List list=new ArrayList();

    list.add("aa");

    list.add("bb");

    list.add("cc");

    Map map=new HashMap();

map.put("a", list);

pageContext.setAttribute("map",map);

     %>



    <logic:iterate id="m" name="map">

     键:${m.key}

     <logic:iterate id="childm" name="m" property="value">内层标签的name对应的是外层标签的id,一定要加上property="value"

     值:${childm}

     </logic:iterate>

    </logic:iterate>
回复 使用道具 举报
可以用map的keyset()和entryset()方法。。。前者是以key为集合属性的形式,或者是以键值为对应关系的,希望能帮到你,出门在外,大爷能不能把一黑马币赏给我呢!!!
回复 使用道具 举报
对于Map的三种方式遍历 1.keySet() 2.values() 3.entrySet()
三种方式得到Set之后,都可以使用 foreach或者iterator, 不能使用for,因为数据结构决定的
回复 使用道具 举报
这个又学习了
回复 使用道具 举报
keyset()和entryset()方法,两种
回复 使用道具 举报
有四种方法:
1、用for循环遍历
2、用迭代器遍历
3、用keySet()遍历
4、用entrySet()遍历
回复 使用道具 举报
package com.jackey.topic;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
//循环遍历map的方法
public class CircleMap {
public static void main(String[] args) {
  Map<String, Integer> tempMap = new HashMap<String, Integer>();
  tempMap.put("a", 1);
  tempMap.put("b", 2);
  tempMap.put("c", 3);
  // JDK1.4中
  // 遍历方法一 hashmap entrySet() 遍历
  System.out.println("方法一");
  Iterator it = tempMap.entrySet().iterator();
  while (it.hasNext()) {
   Map.Entry entry = (Map.Entry) it.next();
   Object key = entry.getKey();
   Object value = entry.getValue();
   System.out.println("key=" + key + " value=" + value);
  }
  System.out.println("");
  // JDK1.5中,应用新特性For-Each循环
  // 遍历方法二
  System.out.println("方法二");
  for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
   String key = entry.getKey().toString();
   String value = entry.getValue().toString();
   System.out.println("key=" + key + " value=" + value);
  }
  System.out.println("");
  // 遍历方法三 hashmap keySet() 遍历
  System.out.println("方法三");
  for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
   Object obj = i.next();
   System.out.println(obj);// 循环输出key
   System.out.println("key=" + obj + " value=" + tempMap.get(obj));
  }
  for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
   Object obj = i.next();
   System.out.println(obj);// 循环输出value
  }
  System.out.println("");
  // 遍历方法四 treemap keySet()遍历
  System.out.println("方法四");
  for (Object o : tempMap.keySet()) {
   System.out.println("key=" + o + " value=" + tempMap.get(o));
  }
  System.out.println("11111");
  // java如何遍历Map <String, ArrayList> map = new HashMap <String,
  // ArrayList>();
  System.out
    .println("java  遍历Map <String, ArrayList> map = new HashMap
<String, ArrayList>();");
  Map<String, ArrayList> map = new HashMap<String, ArrayList>();
  Set<String> keys = map.keySet();
  Iterator<String> iterator = keys.iterator();
  while (iterator.hasNext()) {
   String key = iterator.next();
   ArrayList arrayList = map.get(key);
   for (Object o : arrayList) {
    System.out.println(o + "遍历过程");
   }
  }
  System.out.println("2222");
  Map<String, List> mapList = new HashMap<String, List>();
  for (Map.Entry entry : mapList.entrySet()) {
   String key = entry.getKey().toString();
   List<String> values = (List) entry.getValue();
   for (String value : values) {
    System.out.println(key + " --> " + value);
   }
  }
}
}
回复 使用道具 举报
有keySet();   和 entrySet();方法
回复 使用道具 举报
上面的刷分狂魔把我要说的都说完了~~
回复 使用道具 举报
1.声明一个map: Map map = new HashMap();
2.向map中放值,注意:map是key-value的形式存放的.如:

map.put(”sa”,”dd”);

3.从map中取值:String str = map.get(”sa”).toString();结果是:str = ”dd”;

4.遍历一个map,从中取得key 和value
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马