黑马程序员技术交流社区

标题: 求解编程题 [打印本页]

作者: 雁过无痕宁    时间: 2016-3-31 17:16
标题: 求解编程题
题目:        map中有{张三=3,李四=7,王五=9,刘六=5,田四=7,周七=3}这些元素,定义一个list,
               将map中value值相同的元素从该map集合中去掉,将剩余的元素中的姓名存入到该list中然后打印到控制台上


作者: fagug    时间: 2016-3-31 17:16
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, 下载次数: 139


作者: wxf468907066    时间: 2016-3-31 18:13
吐血了,大神,加油
作者: lmr1096200234    时间: 2016-3-31 18:50
看看的 饿 饿饿嗯嗯
作者: 菇凉斋    时间: 2016-4-2 23:29
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);
                }
       
        }

}

作者: tianqun1992    时间: 2016-4-4 17:55
fagug 发表于 2016-3-31 17:16
package code26;

import java.util.ArrayList;

这种方法如果出现多个重复好象就不能用了。




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