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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雁过无痕宁 中级黑马   /  2016-3-31 17:16  /  2693 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
题目:        map中有{张三=3,李四=7,王五=9,刘六=5,田四=7,周七=3}这些元素,定义一个list,
               将map中value值相同的元素从该map集合中去掉,将剩余的元素中的姓名存入到该list中然后打印到控制台上

最佳答案

查看完整内容

package code26; import java.util.ArrayList; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; /** * 需求:map中有{张三=3,李四=7,王五=9,刘六=5,田四=7,周七=3}这些元素,定义一个list, 将map中value值相同的元素从该map集合中去掉,将剩余的元素中的姓名存入到该list中然后打印到控制台上 */ public class MapDemo { public static void main(String[] args) { ...

5 个回复

倒序浏览
package code26;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

/**
*   需求:map中有{张三=3,李四=7,王五=9,刘六=5,田四=7,周七=3}这些元素,定义一个list,
                将map中value值相同的元素从该map集合中去掉,将剩余的元素中的姓名存入到该list中然后打印到控制台上

*/

public class MapDemo {

public static void main(String[] args) {
  
  HashMap<String,Integer> map = new HashMap<String,Integer>();
  map.put("张三", 3);
  map.put("李四", 7);
  map.put("王五", 9);
  map.put("赵六", 5);
  map.put("田四", 7);
  map.put("周七", 3);
  
  //定义一个map集合用于反向存储键值对
  HashMap<Integer,String> newMap = new HashMap<Integer,String>();
  //获取map集合的键Set集合
  Set<String> key = map.keySet();
  //定义一个数组用于存储map集合的值
  int[] in = new int[key.size()];
  int index = -1;
  for (String name : key) {
   in[++index] = map.get(name);   
    newMap.put(map.get(name), name);
   }
   
  for (int i : in) {
   System.out.println(i+" ");
  }
  System.out.println("----------");
  Set<Entry<Integer, String>> entrySet = newMap.entrySet();
  for (Entry<Integer, String> entry : entrySet) {
   System.out.println(entry);
  }
  System.out.println("----------");
  //去除数组中的重复元素,判定相同的元素值变为-1标记
  ArrayList<Integer> arr = new ArrayList<Integer>();
  for (int i = 0; i < in.length-1; i++) {
   for (int j = i+1; j < in.length; j++) {
    if (in[i]==in[j]) {
     in[i]=-1;
     in[j]=-1;
    }
   }
  }
  //获取不是-1的元素,这些元素就是原数组不重复的元素
  for (int i = 0; i < in.length; i++) {
   if (in[i]!=-1) {
    arr.add(in[i]);
   }
  }
  //获取不重复数值对应的值并存储到一个list集合中
  ArrayList<String> result = new ArrayList<String>();
  for (int j = 0; j < arr.size(); j++) {
   int number = (int)arr.get(j);
   result.add(newMap.get(number));
  }
  //遍历输出这个集合
  for (String string : result) {
   System.out.println(string);
  }

}

}


MapDemo.rar

1.07 KB, 下载次数: 58

回复 使用道具 举报
吐血了,大神,加油
回复 使用道具 举报
看看的 饿 饿饿嗯嗯
回复 使用道具 举报
public class MapDemo {

        public static void main(String[] args) {
               
                HashMap<String,Integer> map = new HashMap<String,Integer>();
                map.put("张三", 3);
                map.put("李思", 7);
                map.put("王五", 9);
                map.put("赵六", 5);
                map.put("田四", 7);
                map.put("周七", 3);
               

                HashMap<Integer,String> newMap = new HashMap<Integer,String>();
       
                Set<String> key = map.keySet();

                int[] in = new int[key.size()];
                int index = -1;
                for (String name : key) {
                        in[++index] = map.get(name);                               
                                newMap.put(map.get(name), name);
                        }
                               
                for (int i : in) {
                        System.out.println(i+" ");
                }
                System.out.println("----------");
                Set<Entry<Integer, String>> entrySet = newMap.entrySet();
                for (Entry<Integer, String> entry : entrySet) {
                        System.out.println(entry);
                }
                System.out.println("----------");

                ArrayList<Integer> arr = new ArrayList<Integer>();
                for (int i = 0; i < in.length-1; i++) {
                        for (int j = i+1; j < in.length; j++) {
                                if (in[i]==in[j]) {
                                        in[i]=-1;
                                        in[j]=-1;
                                }
                        }
                }

                for (int i = 0; i < in.length; i++) {
                        if (in[i]!=-1) {
                                arr.add(in[i]);
                        }
                }

                ArrayList<String> result = new ArrayList<String>();
                for (int j = 0; j < arr.size(); j++) {
                        int number = (int)arr.get(j);
                        result.add(newMap.get(number));
                }

                for (String string : result) {
                        System.out.println(string);
                }
       
        }

}
回复 使用道具 举报
fagug 发表于 2016-3-31 17:16
package code26;

import java.util.ArrayList;

这种方法如果出现多个重复好象就不能用了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马