为什么我的输出不是按时间顺序的,或者它不是按用户输入的,基于输出我发现它像随机输入的值,我怎么能按时间顺序打印我的Map的值,而不使用treemap排序我只是使用hashmap和map包,所以你认为在这个逻辑错误中发生了什么?如何使用hashmap来满足预期的输出?有可能吗?
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class StudentList
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
Map<String,String> students = new HashMap<>();
for (int x=1; x<=3; x++)
{
System.out.print("Enter student number " + x + ": ");
String studnum = sc.nextLine();
System.out.print("Enter first name " + x + ": ");
String studfname = sc.nextLine();
students.put(studnum, studfname);
if (x==3)
{
System.out.println("\nPlease hit ENTER");
String enter = sc.nextLine();
if (enter.equals("")) {
System.out.println("Processing...");
students.remove(studnum,studfname);
System.out.println("3rd entry removed!\n");
System.out.print("Enter student number 3: ");
String studnum1 = sc.nextLine();
System.out.print("Enter first name 3: ");
String studfname1 = sc.nextLine();
students.put(studnum1, studfname1);
}
else
{
System.out.println("Invalid Please Try again....");
}
}
}
System.out.println("\nStudent List: ");
for (Map.Entry e : students.entrySet() )
{
System.out.println(e.getKey() + " : " + e.getValue());
}
}
}
输出:
Enter student number 1: 2018-0004
Enter first name 1: Mark
Enter student number 2: 2018-0017
Enter first name 2: Nika
Enter student number 3: 2018-0134
Enter first name 3: Mairo
Please hit ENTER
Processing...
3rd entry removed!
Enter student number 3: 2018-0134
Enter first name 3: Mairo
Student List:
2018-0017 : Nika
2018-0004 : Mark
2018-0134 : Mairo
预期产量:
Enter student number 1: 2018-0004
Enter first name 1: Mark
Enter student number 2: 2018-0017
Enter first name 2: Nika
Enter student number 3: 2018-0134
Enter first name 3: Mairo
Please hit ENTER
Processing...
3rd entry removed!
Enter student number 3: 2018-0134
Enter first name 3: Mairo
Student List:
2018-0004 : Mark
2018-0017 : Nika
2018-0134 : Mairo
3条答案
按热度按时间t98cgbkg1#
它不属于
HashMap
,但您可以使用java流执行以下操作来对其进行排序:ldioqlga2#
对于时间顺序,您应该使用
LinkedHashMap
.这是不同的数据结构。
HashMap
不记得插入顺序。k3bvogb13#
你问:
为什么我的hashmap没有按时间顺序打印?
为什么我的输出不是按时间顺序排列的,或者不是按用户输入的顺序排列的
因为这样的排序不是那个类的特征。为什么我的微波炉不洗碗?
HashMap
不保证迭代顺序。如果您关心迭代顺序,请使用Map
.引用
HashMap
javadoc公司:这个类不保证Map的顺序;特别是,它不能保证随着时间的推移,订单将保持不变。
如果要按键的自然顺序排列贴图,请使用
SortedMap
或者NavigableMap
.TreeMap
就是这样一种实现。你莫名其妙地拒绝使用TreeMap
这对我来说毫无意义。如果你想开车,不要拒绝提供车辆。如果要按原始插入顺序排列贴图,请使用
LinkedHashMap
.下面是我制作的一个图表,显示了
Map
与java捆绑的实现。注意迭代顺序列。