单词词典:需要扫描每个元素的单词长度并进行搜索

时间:2017-04-06 16:21:19

标签: java

我已将单词文件转换为String数组。我需要以某种方式将数组转换为字长列表并使其可搜索。换句话说,我需要能够输入一个单词长度(例如,5),并且只能显示单词长度为5的单词。救命?

public static void main(String[] args) throws IOException {    
  String token1 = ""; 
  Scanner scan = new Scanner(new File("No.txt"));
  List<String> temps = new ArrayList<String>();
    while (scan.hasNext()){ 
           token1 = scan.next(); 
           temps.add(token1);
     }
  scan.close();
  String[] tempsArray = temps.toArray(new String[0]);
  for (String s : tempsArray) {

1 个答案:

答案 0 :(得分:4)

你没有使用数组。您需要的是收藏品,更准确地说是:MapsLists;因为你想使用Map<Integer, List<String>>

含义:使用&#34;字长&#34;的地图作为关键;并且映射的条目是包含具有该长度的所有那些单词的列表。这里有一些代码可以帮助您入门:

Map<Integer, List<String>> wordsByLength = new HashMap<>();
// now you have to fill that map; lets assume tempsArray contains all your words
for (String s : tempsArray) {
  List<String> listForCurrentLength = wordsByLength.get(s.length());
  if (listForCurrentLength == null) {
    listForCurrentLength = new ArrayList<>();
  }
  listForCurrentLength.add(s);
  wordsByLength.put(s.length(), listForCurrentLength);

这个想法基本上是迭代你已经得到的数组;并为那里的每个字符串...把它放到那张地图上;取决于它的长度。

(以上内容刚刚写下来;既没有编译也没有经过测试;正如所说的那样是&#34;伪代码&#34;让你前进)