Im new для java, и я работаю над вопросом, где мне нужно выводить элементы из HashMap
в порядке ввода. Я понял, что HashMap
не может этого сделать, и LinkedHashMap
был специально разработан для поддержания этого заказа. Я применил LinkedHashMap
в своей проблеме, но выход не последовал за входной последовательностью. Пожалуйста, помогите мне в этом. Пожалуйста, найдите мой вопрос и код ниже.Вывести числа в последовательности, используя LinkedHashMap в Java
Пользователь вводит количество имен n
и имена лиц (имена добавляются в карту с именем будучи key
и командный номер он/она принадлежит, как value
). Я должен напечатать соответствующие values
имена, которые вводит пользователь.
Входной сигнал: 4
Aurora
Дамбо
Ариэль
Bambi
Выход: Он должен быть [1,3,1,2]
- выход из list
Но выход я получаю из приведенной ниже программы [1,1,2,3]
Я попытался выяснить, что была моя ошибка, но в vain.Kindly помощь по этому вопросу. Благодарю.
import java.io.*;
import java.util.*;
public class DonaldPostman {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
Map<String,Integer> m = new LinkedHashMap<String,Integer>();
List<Integer> l = new ArrayList<Integer>();
m.put("Aurora", 1);m.put("Ariel", 1);m.put("Alice", 1);m.put("Phil", 1);m.put("Peter", 1);m.put("Olaf", 1);m.put("Phoebus", 1);m.put("Ralph", 1);m.put("Robin", 1);
m.put("Bambi", 2);m.put("Belle", 2);m.put("Bolt", 2);m.put("Mulan", 2);m.put("Mowgli", 2);m.put("Mickey", 2);m.put("Silver", 2);m.put("Simba", 2);m.put("Stitch", 2);
m.put("Dumbo", 3);m.put("Genie", 3);m.put("Jiminy", 3);m.put("Kuzko", 3);m.put("Kida", 3);m.put("Kenai", 3);m.put("Tarzan", 3);m.put("Tiana", 3);m.put("Winnie", 3);
int n = in.nextInt();
String[] arr = new String[n];
for(int i=0;i<n;i++) {
arr[i] = in.next();
}
Set ms = (Set) m.entrySet();
Iterator it = ms.iterator();
while (it.hasNext()) {
Map.Entry mapEntry = (Map.Entry) it.next();
String key = (String) mapEntry.getKey();
Integer value = (Integer) mapEntry.getValue();
for(int i=0;i<arr.length;i++) {
if(arr[i].equals(key)) {
l.add(value);
}
}
}
System.out.println(l);
}
}
Почему вы думаете, это должно быть то, что выход? –
Вы добавляете их в порядке очереди 1 на 2, а затем 3. Почему вы ожидаете, что заказ будет «1,3,1,2'? –
имена, которые вводит пользователь, могут быть любыми. Я хочу напечатать значение конкретного имени, которое вводит пользователь. – Dev