插入自定义Map功能

时间:2014-05-09 05:15:27

标签: java map bufferedreader

好的,我正在尝试为我的作业创建一个新地图。我不确定如何将其插入此类型。主要目标是读取文件,使用文件的第一行作为地图的名称/键,然后将第二行添加到地图的第二部分。我只是在实际插入时遇到了麻烦。主要功能背面没有代码,我只想获得实际插入的帮助:

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

public class TimetableReader {

    private static Map<Route, List<Service>> timeTable;


    public static Map<Route, List<Service>> read(String fileName)
            throws IOException, FormatException {
        timeTable.put(key, value)
        /* Reads in the file */
        try
          {
          FileInputStream in = new FileInputStream(fileName); // Creates a new input stream
          BufferedReader br = new BufferedReader(new InputStreamReader(in)); // Creates a new Buffer Reader
          String strLine; // Creates Variable that will represent each line
          /* Processes the lines in the file */
          boolean newRoute = true;  
          int routeNumber = 0;

          while((strLine = br.readLine())!= null)
          {

            if  (newRoute == true) {
                newRoute = false;
                timeTable[routeNumber] = strLine;
            }



          }/* END - Process file */

          }catch(Exception e){
           System.out.println(e);
          }
        /* END - Read file */


        return  timeTable;
    }
}

2 个答案:

答案 0 :(得分:0)

要插入Map使用put(K,V)方法,K是关键,V是值。

//timeTable[routeNumber] = strLine;
timeTable.put(K, V);

您的地图密钥应为Route类型,值类型应为List<String>

请参阅java api here

答案 1 :(得分:0)

您的代码存在一些问题,但让我们从您提出的问题开始: 对象timeTable是一个map,您将它用作(关联)数组,不要将键视为数字,而是将它们视为对象,任何类型的对象都可以是键;您将不得不更改代码并执行以下操作:

if  (newRoute == true) {
    newRoute = false;
    timeTable.put(routeNumber, strLine);
}

我在代码中看到的问题是:

  • 根据timeTable声明,地图使用Route对象作为键,使用List of Service作为值;您试图将整数(使用autoboxing)作为键,将String作为值。
  • 您应该在finally块中关闭输入流;使用它们后关闭所有开放资源总是很好的做法。

希望它有所帮助。