如何将创建的列表的键和值提供给地图?

时间:2019-02-10 18:36:09

标签: java arraylist hashmap

public class HashMapTest2 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        Map<String,String> player = new HashMap<>();
        System.out.println("Enter number of Players");
        Integer p = Integer.valueOf(s.nextLine());
        System.out.println("Enter number of Teams");
        Integer t = Integer.valueOf(s.nextLine());

        List<String> listp = new ArrayList<>();
        for (int i = 0; i<p; i++){
            System.out.println("Enter Player name "+i);
            listp.add(s.nextLine());
        }

        List<String> listt = new ArrayList<>();
        for (int i = 0; i<t; i++){
            System.out.println("Enter Team name "+i);
            listt.add(s.nextLine());
        }
        for (String str1 : listp){
            for (String str2 : listt){
                player.put(str1,str2);
            }
        }
        System.out.println("---------------");
        System.out.println(player);

    }
}

我想将玩家名称分配为键,将球队名称分配为值... 好像我没有得到正确。 我尝试使用for-each循环,但它为每个循环都赋予了相同的价值...

1 个答案:

答案 0 :(得分:0)

采取以下假设-

  1. 球员和球队数量相同
  2. 我们可以将任何球员随机分配给任何团队(没有相同的标识符)

如果上述假设正确,您可以尝试以下代码-

public class HashMapTest2 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        Map<String,String> player = new HashMap<>();
        System.out.println("Enter number of Players");
        Integer p = Integer.valueOf(s.nextLine());
        System.out.println("Enter number of Teams");
        Integer t = Integer.valueOf(s.nextLine());

        List<String> listp = new ArrayList<>();
        for (int i = 0; i<p; i++){
            System.out.println("Enter Player name "+i);
            listp.add(s.nextLine());
        }

        List<String> listt = new ArrayList<>();
        for (int i = 0; i<t; i++){
            System.out.println("Enter Team name "+i);
            listt.add(s.nextLine());
        }
        for(int i=0;i<listp.size();i++) {
            player.put(listp.get(i), listt.get(i));
        }

        System.out.println("---------------");
        System.out.println(player);

    }
}