将值与文本文件[Java]中的HashMap中的键相关联

用户名

我有一个文本文件,该文件具有打印机,然后是与该打印机关联的打印作业:

LaserJet This assignment involves . . .
LaserJet Budget for November . . .
Lexmark Invoice Number 334222: . . .
Samsung Class schedule for 2013/01/06 . . .
Lexmark Production schedule . . .
Samsung Class schedule for 2013/02/06 . . .
LaserJet Memo to Bobby Hill . . .
Lexmark Meeting in 20 minutes . . .
Lexmark Conference call transcript . . .
Lexmark Production schedule is off time . . .
Lexmark Last Production schedule . . .
LaserJet Print a crapload of pages . . .

我想将文本文件读入程序,并创建一个以打印机名称为键的HashMap,并将printjob与相应的打印机关联。所以我最终会得到类似:

LaserJet
This assignment involves . . .
udget for November . . .
Memo to Bobby Hill . . .
Print a crapload of pages . . .

Samsung
Class schedule for 2013/01/06 . . .
Class schedule for 2013/02/06 . . .

Lexmark
Invoice Number 334222: . . .

等等(该文件可能包含1000份使用许多不同打印机的作业)。我正在努力将printjob与它的打印机相关联。到目前为止,这是我的代码:

import java.util.*;
public class Printers {

private String sPrinterName;
private String sContent;
private Map<String, ArrayList<String>> mapOfJobs = new HashMap<String, ArrayList<String>>();
private ArrayList<String> collectionContent = new ArrayList<String>();
private ArrayList<String> collectionPrinters = new ArrayList<String>();

public Printers() { }

public void loadCollections( Scanner input ) {
    while ( input.hasNext() ) {
        sPrinterName = input.next(); // get printer name
        sContent = input.nextLine(); // get string ( print job )
        if ( !collectionPrinters.contains(sPrinterName))
            collectionPrinters.add(sPrinterName);
        collectionContent.add(this.sContent);
    }
}

public void buildMap() { // the process of creating the HashMap
    for ( int i = 0; i < collectionPrinters.size(); i++ ) {
        String refToPrinter = collectionPrinters.get(i);
        String refToContent = collectionContent.get(i);
        if ( !mapOfJobs.containsKey( refToPrinter ) ) {
                ArrayList<String> tmp = new ArrayList<String>();
                tmp.add( refToContent );
                mapOfJobs.put( refToPrinter, tmp );
        }
        else if ( !mapOfJobs.get( refToPrinter ).contains( refToContent ) )
            mapOfJobs.get( refToPrinter ).add( refToContent );
    }
} 

public void displayAll() { // print everything
    Iterator iterator = mapOfJobs.keySet().iterator();

    while (iterator.hasNext()) {
       String key = iterator.next().toString();
       String value = mapOfJobs.get(key).toString();

       System.out.println(key + " " + value);
    }

}

public String toString() {
    return String.format("Printer: %s     Job: %s", sPrinterName, sContent );
}
}

我有一个主要的类,它创建一个Printers对象来调用方法。无论如何,代码仅输出:

LaserJet [ This assignment involves . . .]
Lexmark [ Budget for November . . .]
Samsung [ Invoice Number 334222: . . .]

帮助表示赞赏。

Masudul

您不需要那么多Collections,仅mapOfJobsHashMap就足够了,

 public void loadResult( Scanner input ) {
 while ( input.hasNextLine() ) {
    String line=input.nextLine();

    sPrinterName = line.subString(0, line.indexOf(' '));// printer name
    sContent = line.subString(line.indexOf(' ')+1);  // get string ( print job )

    List<String> contentList=mapOfJobs.get(sPrinterName);
    if(contentList==null ){
       contentList=new ArrayList<>();
     }
     contentList.add(sContent);
     mapOfJobs.put(sPrinterName,contentList)
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将集合中的文本文件与fs集合中的图像相关联?

来自分类Dev

将文本文件中的值添加到HashMap中

来自分类Dev

处理html中的文本:将属性与句子相关联

来自分类Dev

将文件类型与 ubuntu 18.04 中的程序相关联

来自分类Dev

(C ++)-将字符串与从文件中读取的值相关联

来自分类Dev

将方法与Java脚本中的变量相关联

来自分类Dev

将一本字典中的键与另一本字典中的值相关联

来自分类Dev

如何将文本文件中的值存储在Java数组中?

来自分类Dev

如何将文本文件中的键和值保存到两个单独的数组中?

来自分类Dev

无法将输出写入JAVA中的文本文件

来自分类Dev

从文本文件中检索值

来自分类Dev

检查文本文件中的值

来自分类Dev

解析文本文件中的值

来自分类Dev

将散列的键与 Ruby 中不同数组中的数组元素相关联

来自分类Dev

将包含值列表的字典写入文本文件,并为列表中的每个元素重复键

来自分类Dev

如何将每个文本文件的内容存储到关联数组中?

来自分类Dev

文本文件中的相关矩阵

来自分类Dev

在Java中编辑文本文件

来自分类Dev

扫描Java中的文本文件

来自分类Dev

在Java中编辑文本文件

来自分类Dev

在java中读取文本文件

来自分类Dev

在 Java 中显示文本文件

来自分类Dev

合并与JSON中的键相关联的所有值

来自分类Dev

在Swift 3中写入Firebase时,如何将我的值与其键相关联?

来自分类Dev

将多个命令与.xbindkeys中的一个键相关联

来自分类Dev

将按钮与Enter键相关联

来自分类Dev

如何将xml文本与Python中的先前空元素相关联?

来自分类Dev

Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

来自分类Dev

从两个纯文本文件中收集键和值

Related 相关文章

  1. 1

    如何将集合中的文本文件与fs集合中的图像相关联?

  2. 2

    将文本文件中的值添加到HashMap中

  3. 3

    处理html中的文本:将属性与句子相关联

  4. 4

    将文件类型与 ubuntu 18.04 中的程序相关联

  5. 5

    (C ++)-将字符串与从文件中读取的值相关联

  6. 6

    将方法与Java脚本中的变量相关联

  7. 7

    将一本字典中的键与另一本字典中的值相关联

  8. 8

    如何将文本文件中的值存储在Java数组中?

  9. 9

    如何将文本文件中的键和值保存到两个单独的数组中?

  10. 10

    无法将输出写入JAVA中的文本文件

  11. 11

    从文本文件中检索值

  12. 12

    检查文本文件中的值

  13. 13

    解析文本文件中的值

  14. 14

    将散列的键与 Ruby 中不同数组中的数组元素相关联

  15. 15

    将包含值列表的字典写入文本文件,并为列表中的每个元素重复键

  16. 16

    如何将每个文本文件的内容存储到关联数组中?

  17. 17

    文本文件中的相关矩阵

  18. 18

    在Java中编辑文本文件

  19. 19

    扫描Java中的文本文件

  20. 20

    在Java中编辑文本文件

  21. 21

    在java中读取文本文件

  22. 22

    在 Java 中显示文本文件

  23. 23

    合并与JSON中的键相关联的所有值

  24. 24

    在Swift 3中写入Firebase时,如何将我的值与其键相关联?

  25. 25

    将多个命令与.xbindkeys中的一个键相关联

  26. 26

    将按钮与Enter键相关联

  27. 27

    如何将xml文本与Python中的先前空元素相关联?

  28. 28

    Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

  29. 29

    从两个纯文本文件中收集键和值

热门标签

归档