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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

程梦真 发表于 2014-12-21 11:08
刚来黑马 老师看一下

E:\itheima\itheima\bin\itheima\DPH`)QQACEKHJYU5OMPZF1A.jpg
回复 使用道具 举报
程梦真 发表于 2014-12-21 11:08
刚来黑马 老师看一下

E:\itheima\itheima\bin\itheima\mapDemo.jpg
回复 使用道具 举报
程梦真 发表于 2014-12-21 11:14
E:\itheima\itheima\bin\itheima\mapDemo.jpg

E:\itheima\itheima\bin\itheima\mapDemo.jpg
回复 使用道具 举报
啥情况,,黑马论坛菜鸟,,不会提交图片- -。

mapDemo.jpg (181.52 KB, 下载次数: 30)

mapDemo.jpg
回复 使用道具 举报
      领题
回复 使用道具 举报
程梦真 发表于 2014-12-21 11:08
刚来黑马 老师看一下

抱歉老师我是论坛菜鸟。。。
  1. package itheima;

  2. import java.util.HashMap;
  3. import java.util.Map;

  4. public class MapDemo {
  5.         public static void main(String[] args) {
  6.                 Map<Integer, String> map = new HashMap<Integer, String>();
  7.         map.put(1, "90");
  8.         map.put(2, "80");
  9.         map.put(3, "70");
  10.         map.put(4, "60");
  11.         map.put(5, "50");
  12.         map.put(6, "40");
  13.         map.put(7, "30");
  14.         map.put(8, "20");
  15.         map.put(9, "10");
  16.         //第一小题
  17.         Map<Integer, String> newMap = new HashMap<Integer, String>();
  18.         for (int  key : map.keySet()) {
  19.                         newMap.put(key+Integer.valueOf(map.get(key)), map.get(key));
  20.                 }
  21.         map = newMap;
  22.         System.out.println(map);
  23.         //2. 第二小题
  24.         Map<Integer, String> newMap2 = new HashMap<Integer, String>(); ;
  25.         newMap2.putAll(map);
  26.         for (int  key : newMap2.keySet()) {
  27.                 int keyValueSum = key + Integer.valueOf(map.get(key));
  28.                         if ( 50 < keyValueSum && keyValueSum < 150 ) {
  29.                                 map.remove(key);
  30.                         }
  31.                 }
  32.         System.out.println(map);
  33.         }
复制代码

4S7IYB2Y0_7Z3}~Y{707Q32.jpg (199.97 KB, 下载次数: 27)

4S7IYB2Y0_7Z3}~Y{707Q32.jpg
回复 使用道具 举报

前些日子看到这道题时不会做, 今天刚学完map就把这道题给做了。阳哥请查阅。
关于题目要求,我的看法是,程序自始至终都是一个map(虽然这不影响程序结果),数据在变但对象一直没变。
所以在我的代码中把这一点体现了出来。另外,我就里面的具体细节做了注释,以及为什么要那样写。
另外……话多了点似乎……:P

技术分活动第二十八期.rar

8.55 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Little_Pea 发表于 2014-12-21 17:50
前些日子看到这道题时不会做, 今天刚学完map就把这道题给做了。阳哥请查阅。
关于题目要求,我的看法是, ...

写的很好,赞一个,你在不停的进步,很有自己的想法:
  1. package test28;

  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.Map.Entry;
  7. import java.util.Set;

  8. /*
  9. * ①将map集合的key值转变为key+(int)value,并输出转变后的map
  10. * ②在第①步的基础上(map已经是新map了),
  11. * 删除map中50<key+(int)value<150的元素,并输出删除数据后的map
  12. */
  13. public class MapTest {

  14.         public static void main(String[] args) {
  15.                 Map<Integer, String> map = new HashMap<Integer, String>();
  16.                 map.put(1, "90");
  17.                 map.put(2, "80");
  18.                 map.put(3, "70");
  19.                 map.put(4, "60");
  20.                 map.put(5, "50");
  21.                 map.put(6, "40");
  22.                 map.put(7, "30");
  23.                 map.put(8, "20");
  24.                 map.put(9, "10");

  25.                 System.out.println("未改变key之前的map:\n" + map);
  26.                 System.out.println("改变key之后的map:\n" + setKey(map));
  27.                 System.out.println("删除map中50<key+(int)value<150的元素后的map:\n"
  28.                                 + deleteKey(map));
  29.         }
  30.         /*
  31.          * 该函数用来改变map的键值key
  32.          */
  33.         public static Map<Integer, String> setKey(Map<Integer, String> map) {
  34.                 /*
  35.                  * 创建两个list用来存放map的键值key和键值所对应的值value
  36.                  */
  37.                 ArrayList<Integer> keyList = new ArrayList<Integer>();
  38.                 ArrayList<String> valueList = new ArrayList<String>();
  39.                 //获取map的键值对映射对象集合
  40.                 Set<Map.Entry<Integer, String>> entrys = map.entrySet();
  41.                 //获取映射集合的迭代器
  42.                 Iterator<Entry<Integer, String>> it = entrys.iterator();
  43.                
  44.                 while (it.hasNext()) {
  45.                         Map.Entry<Integer, String> entry = it.next();
  46.                         Integer key = entry.getKey();
  47.                         String value = entry.getValue();
  48.                         //执行key+(int)value操作,这里用到了Integer将字符串转换成Integer的函数parseInt
  49.                         Integer newKey = key + Integer.parseInt(value);
  50.                         //将新的键值和map中原先的值添加到对应列表
  51.                         keyList.add(newKey);
  52.                         valueList.add(value);
  53.                 }
  54.                 //这里进行了map清除,因为题目中规定操作结束后会返回一个新的map
  55.                 map.clear();
  56.                 /*
  57.                  * 这里重新给map添加值
  58.                  */
  59.                 for (int i = 0; i < keyList.size(); i++) {
  60.                         map.put(keyList.get(i), valueList.get(i));
  61.                 }
  62.                 //返回map,没有创建新的map对象,只是经过操作后返回具有新的值的map
  63.                 return map;
  64.         }

  65.         /*
  66.          * 该函数用来删除map中50<key+(int)value<150的元素,编程思路跟setKey函数差不多,只是需要注意一点:
  67.          * 程序要判断的是经过前面setKey函数操作过的map(新map,当然只是数据新,而不是对象自身新)中键值key大于50
  68.          * 并且小于150。其实这里又经过了一次跟setKey函数差不多的操作,只是没有改变map的值。
  69.          */
  70.         public static Map<Integer, String> deleteKey(Map<Integer, String> map) {

  71.                 Set<Map.Entry<Integer, String>> entrys = map.entrySet();
  72.                 Iterator<Entry<Integer, String>> it = entrys.iterator();
  73.                 ArrayList<Integer> result = new ArrayList<Integer>();
  74.                 while (it.hasNext()) {
  75.                         Map.Entry<Integer, String> entry = it.next();
  76.                         int key = entry.getKey();
  77.                         String value = entry.getValue();
  78.                         int newKey = key + Integer.parseInt(value);
  79.                         /*
  80.                          * 这里是需要注意的一点;
  81.                          * 经过上面int newKey = key + Integer.parseInt(value);操作后,要将key值存到表示满足
  82.                          * 50<key+(int)value<150的列表中,而不是newKey
  83.                          */
  84.                         if (newKey > 50 && newKey < 150) {
  85.                                 result.add(key);
  86.                         }
  87.                        
  88.                 }
  89.                
  90.                 /*
  91.                  * 这个for循环没有写进while块中是因为:
  92.                  * 写进去会引发并发修改异常ConcurrentModificationException,因为在迭代器获取元素的同时又在删除数据,
  93.                  * 所以会引发数据安全问题
  94.                  */
  95.                 for (int i = 0; i < result.size(); i++) {
  96.                         map.remove(result.get(i));
  97.                 }
  98.                 return map;
  99.         }
  100. }
复制代码
回复 使用道具 举报
领题。。。。。。。。。。。。。。。
回复 使用道具 举报
速度的分。。。。。

题目.rar

12.86 KB, 下载次数: 28

回复 使用道具 举报

到现在我还是没理解题目的意思,,语文功底太差,阳哥见谅!!!惭愧
回复 使用道具 举报
回帖领题哦
回复 使用道具 举报
领题来了
回复 使用道具 举报
1103--英伦风格 发表于 2014-12-23 13:04
到现在我还是没理解题目的意思,,语文功底太差,阳哥见谅!!!惭愧

哎,也怪我语文不好,没说清楚题意。
回复 使用道具 举报
看看题~~~~~
回复 使用道具 举报
JavaSE之Map集合操作。
回复 使用道具 举报
领题领题
回复 使用道具 举报
拿提看看
回复 使用道具 举报
领题。。。。。
回复 使用道具 举报
kankan..............
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马