0

1 つは男性から、もう 1 つは女性からの 2 つの異なるエントリを含むファイルがありました。名前をキー、対応する ID を値とするハッシュマップを使用して、ファイルとストアを読み取ろうとしています。それらを2つの異なるマップに保存する方法を理解するのを手伝ってくれる人がいますか. どうもありがとうございました。これがサンプル入力と方向のない私のコードです!!!!!!!!

**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

あなたが何を求めているのか正確には少し不明です。両方が 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

あなたが2つのファイルを持っていると仮定すると...1つの方法でこれを持っている方が良いです:

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 に答える
0

私が正しければ、男性用と女性用に 2 つのマップを使用する必要があります。さて、解決策は次のようになります。

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 に答える