这在JavaScript中很容易实现。不知道如何在Java中这样做:
下面是发送到displayItems的哈希表
Hashtable<Integer, String> items = new Hashtable<Integer, String>();
items.put(0, "Soda");
items.put(1, "Candy");
items.put(2, "Fruit");下面是我要做的,根据这个列表创建一个消息:
public void displayItems(Hashtable<Integer, String> items) {
String message = "Please specify an item: ";
items.forEach((itemIndex, itemName) -> {
message += `${itemIndex}: ${itemName},`;
});
outputStream.print(message);
}我希望打印到消息流中的结果是:
"Please specify an item: 0: Soda, 1: Candy, 2: Fruit"发布于 2021-02-05 00:47:18
另一个答案有效,但是如果您想保留displayItems函数和Hashtable,这里有一个标准的解决方案。
Hashtable<Integer, String> items = new Hashtable<Integer, String>();
items.put(0, "Soda");
items.put(1, "Candy");
items.put(2, "Fruit");
displayItems(items);
public static void displayItems(Hashtable<Integer, String> items) {
String message = "Please specify an item: ";
for(int i = 0; i < items.size(); ++i) {
message += String.valueOf(i) + ": " + items.get(i);
if(i+1 < items.size()) message += ", ";
}
System.out.println(message);
}输出:
Please specify an item: 0: Soda, 1: Candy, 2: Fruit发布于 2021-02-05 00:39:28
import java.util.Map;
import java.util.stream.Collectors;
class Main {
public static void main(String args[]) {
Map<Integer, String> items = Map.of(
0, "Soda",
1, "Candy",
2, "Fruit"
);
String s = items.entrySet().stream()
.map(e -> String.format("%d: %s", e.getKey(), e.getValue()))
.collect(Collectors.joining(", ", "Please specify an item: ", ""));
System.out.println(s);
}
}请指定一个项目: 1:糖果,0:苏打水,2:水果
备注:
Map是使用Java11构建器语法创建的,如果使用的是较低的版本,则可以相应地更新代码。不要使用Hashtable;它已经被废弃了几十年了。.map().之前添加一个.sorted(Comparator.comparing(Map.Entry::getKey))
https://stackoverflow.com/questions/66055906
复制相似问题