2017-03-07 59 views
0

作为我的HOMEWORK的一部分,我试图读取一个由汽车模型组成的文件,并将每个文件的总数输出到控制台。使用集合和地图来读取文本文件

我已经实现了这一点,通过使用一个映射与模型名称作为键和计数器作为值。

虽然,现在我只想输出添加到Set的模型。 因此,如果Fiat在文件中,它不会被使用,因为它不在允许的Set中。

希望这是有道理的和帮助表示赞赏。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Map; 
import java.util.Scanner; 
import java.util.Set; 
import java.util.TreeMap; 
import java.util.TreeSet; 

public class Test 
{ 

public static void main(String[] args) throws FileNotFoundException 
{ 
    TreeMap<String, Integer> map = new TreeMap<String, Integer>(); 
    Set<String> fruit = new TreeSet<String>(); 
    fruit.add("BMW"); 
    fruit.add("Mercedes"); 
    fruit.add("Ford"); 
    fruit.add("Nissan"); 
    fruit.add("Tesla"); 

    File inputFile = new File("input.txt"); 
    Scanner in = new Scanner(inputFile); 

    while (in.hasNext()) 
    { 
     String word = in.next(); 
     if (map.containsKey(word)) 
     { 
      int count = map.get(word) + 1; 
      map.put(word, count); 
     } 
     else 
     { 
      map.put(word, 1); 
     } 
    } 
    in.close(); 

    for (Map.Entry<String, Integer> entry : map.entrySet()) 
    { 
     System.out.println(entry); 
    } 
    } 
} 

回答

1

你可以遍历你的设置,然后调用地图的“get”方法。

例如

for (String car : fruit) { 
    Integer value = map.get(car); 
    if (value != null) { 
     System.out.println(value); 
    } 
} 

如果结果不为空,则将其打印到控制台,否则查找下一个。

0

试试这个,

TreeMap<String, Integer> map = new TreeMap<String, Integer>(); 
    Set<String> fruit = new TreeSet<String>(); 
    fruit.add("BMW"); 
    fruit.add("Mercedes"); 
    fruit.add("Ford"); 
    fruit.add("Nissan"); 
    fruit.add("Tesla"); 

    map.put("BMW", 2); 
    map.put("Ford", 2); 
    map.put("SomeOther", 2); 
    System.out.println(map); 

    map.keySet().retainAll(fruit); 

    System.out.println(map); 
    System.out.println(map.keySet());