首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于列表创建动态模板消息

基于列表创建动态模板消息
EN

Stack Overflow用户
提问于 2021-02-05 00:29:10
回答 2查看 54关注 0票数 0

这在JavaScript中很容易实现。不知道如何在Java中这样做:

下面是发送到displayItems的哈希表

代码语言:javascript
复制
Hashtable<Integer, String> items = new Hashtable<Integer, String>();
items.put(0, "Soda");
items.put(1, "Candy");
items.put(2, "Fruit");

下面是我要做的,根据这个列表创建一个消息:

代码语言:javascript
复制
 public void displayItems(Hashtable<Integer, String> items) {
    String message = "Please specify an item: ";
    items.forEach((itemIndex, itemName) -> {
      message += `${itemIndex}: ${itemName},`;
    });
    outputStream.print(message);
  }

我希望打印到消息流中的结果是:

代码语言:javascript
复制
"Please specify an item: 0: Soda, 1: Candy, 2: Fruit"
EN

回答 2

Stack Overflow用户

发布于 2021-02-05 00:47:18

另一个答案有效,但是如果您想保留displayItems函数和Hashtable,这里有一个标准的解决方案。

代码语言:javascript
复制
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);
}

输出:

代码语言:javascript
复制
Please specify an item: 0: Soda, 1: Candy, 2: Fruit
票数 2
EN

Stack Overflow用户

发布于 2021-02-05 00:39:28

代码语言:javascript
复制
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:水果

备注:

  1. Map是使用Java11构建器语法创建的,如果使用的是较低的版本,则可以相应地更新代码。不要使用Hashtable;它已经被废弃了几十年了。
  2. 不能保证项目将按照数字索引进行排序。如果这很重要,那么在.map().

之前添加一个.sorted(Comparator.comparing(Map.Entry::getKey))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66055906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档