0

我有一个包含两个不同条目的文件,一个来自男性,另一个来自女性。尝试使用以名称为键、对应的 ID 为值的 hashmap 读取文件并存储。有人可以帮我弄清楚如何将它们存储在两个不同的地图中。换句话说,如果男性将其指向(map.males),而女性将其指向(map.females)。非常感谢。这是示例输入和我的没有方向的代码!!!!!!!

**Males**
 Rob 1
 John 3
 Josh 7
 Anand 9
 Paul 5
 Norm 8
 Alex 4

 **Females** 
  Kally 43
  Kate 54
  Mary 23
  Amanda 13
  Mariam 15
  Alyssa 18
 Christina 24



 import java.io.*;
 import java.util.*;

 class ReadFileAndStoreHashmap {
 public static void main(String[] args)  {
 try{
   Scanner scanner = new Scanner(new FileReader("C:\"));
   HashMap<String, String> map = new LinkedHashMap<String, String>();
   while (scanner.hasNextLine()) {
   String[] columns = scanner.nextLine().split(" ");
   if(columns.length == 2)
   map.put(columns[0], columns[1]);
  System.out.println(map);
    }
    }catch (Exception e){
   System.out.println(e.toString());
   }}}
4

3 回答 3

1

有点不清楚你在问什么。如果两者都在一个文件中并由Females分隔,那么当您看到时只需切换地图:

import java.io.*;
import java.util.*;

class ReadFileAndStoreHashmap {
public static void main(String[] args)  {
 try{
   Scanner scanner = new Scanner(new FileReader("C:\"));
   HashMap<String, String> maleMap = new LinkedHashMap<String, String>();
   HashMap<String, String> femaleMap = new LinkedHashMap<String, String>();
   Map<String,String> currentMap = maleMap;
   while (scanner.hasNextLine()) {
     String nextLine = scanner.nextLine();
     if (nextLine.equals("**Females**") {
        currentMap = femaleMap;
     } else {
        String[] columns = nextLine.split(" ");
        if(columns.length == 2) {
        currentMap.put(columns[0], columns[1]);
     }
   }
   System.out.println(currentMap);
   }
   }catch (Exception e){
   System.out.println(e.toString());
   }}}
于 2012-07-25T18:39:16.923 回答
0

如果我是正确的,您想为男性和女性使用两张地图。那么解决方案可能如下。

Scanner scanner = new Scanner(new FileReader("C:\"));
   HashMap<String, String> males= new HashMap<String, String>();
   HashMap<String, String> females= new HashMap<String, String>();
   while (scanner.hasNextLine()) {
   String[] columns = scanner.nextLine().split(" ");
   if(columns.length == 2){
       If(its a male)                        //define your logic to decide gender
       males.put(columns[0], columns[1]);
       else if(its a female)
       females.put(columns[0], columns[1]);
       else
       //do nothing
   }
于 2012-07-25T18:20:22.203 回答
0

假设您有 2 个文件......最好用一种方法来拥有它:

private static Map<String, String> getMap(String mapFile) throws FileNotFoundException {

    Scanner scanner = new Scanner(new FileReader(mapFile));
    Map<String, String> map = new LinkedHashMap<String, String>();
    while (scanner.hasNextLine()) {

        String[] columns = scanner.nextLine().trim().split(" ");

        if (columns.length == 2) {
            map.put(columns[0], columns[1]);
        }
    }

    return map;
}

并根据需要分配:

Map<String, String> malesMap = getMap("map.males");
Map<String, String> femalesMap = getMap("map.females");

注意 trim() 处理前导空格。

于 2012-07-25T18:27:20.277 回答