如何使用Java 8流将HashMap的值设置为自定义Java对象?

Nishant:

我有一个HashMap要转换为自定义对象的对象Response我不确定如何将值(80、190、900、95)HashMap设置为自定义对象?如何在Response对象中编写单独的函数,该对象设置价格字段或设置两个参数(键和值)来fromString起作用。

class Converter{

   public static void main(String[] args) {

      Map<String, Long> map = new HashMap<String, Long>();
      map.put("111", 80) // first 
      map.put("1A9-ppp", 190) // second
      map.put("98U-6765", 900) // third
      map.put("999-aa", 95) // fourth

     List<Response> list = 
         map.keySet().stream().map(ent-> Response.fromString(ent.getKey(), ent.getValue())).collect(Collectors.toList());
     // how to set price field from value of the key
   }
}

class Response{}{
  String name;
  Long code;
  String city;
  Long price;

  public static Response fromString(String key, Long value){
    Response res = new Response();
    String[] keys = key.split("//-");
    // some logic to set name and city 
    res.name = keys[0];
    if(keys.length == 2) {
      if(keys[1].matches("-?\\d+(\\.\\d+)?") // check if string is numeric
           { 
                  res.code = keys[1]
           }
       else{
                  res.city = keys[1]
       }
    }
    res.price = value;
    return res;
  }
}
WJS:

我必须修复您的代码中在语法上不正确的一些问题。

  1. 多头必须加一个后缀 L
  2. 放置语句后需要分号
  3. 我从你班上删除了多余的牙套

我加了

  1. 对建设者
  2. 提取名称和城市或提供默认城市名称的实用程序。
  3. 还有一种toString让您看到Response类内容的方法。

    public class Converter {

       public static void main(String[] args) {

          Map<String, Long> map = new HashMap<>();
          map.put("111", 80L); // first
          map.put("1A9-ppp", 190L); // second
          map.put("98U-6765", 900L); // third
          map.put("999-aa", 95L); // fourth

          List<Response> list = map.entrySet().stream().map(
                ent -> Response.instanceOf(ent.getKey(), ent.getValue())).collect(
                      Collectors.toList());

          System.out.println(list);
       }
    }

    class Response {
       String name;
       String city;
       long   price;

       public Response(String name, String city, long price) {
          this.name = name;
          this.city = city;
          this.price = price;
       }

       public static Response instanceOf(String str, long price) {
          if (str.indexOf("-") == -1) {
             str += "-NoName";
          }
          String[] items = str.split("-");
          return new Response(items[0], items[1], price);
       }

       public String toString() {
          return "name = " + name + ", city = " + city + ", " + "price = " + price;
       }
    }


本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从使用Java流对象列表的设置

转换列表对象为使用Java 8个流对象的自定义地图

创建新的自定义对象VS Java中多个值设置为NULL同一对象的

如何在Java 8中定义自定义排序比较流比较的键和值

Java的流8。如何汇总每位枚举类型为BigDecimal总计到自定义豆

检查自定义对象的名单是否有在Java属性相同的值8

如何在Java 8中从流中收集自定义类对象?

如何使用Java 8流将列表中的值相乘

java流自定义类

Java 8并行流中的自定义线程池

将默认值设置为自定义java swing组件属性

在Java中将HashMap与自定义对象一起使用

如何在Java 8中将流的结果收集到自定义对象的数组中

如何使用FFMPEG为字幕流设置自定义handler_name元数据

如何将经典的自定义数据结构用作Java 8流

如何使用Java 8对同一个自定义对象执行多项操作

如何使用Java 8中的自定义Comparator接口对对象数组进行排序?

如何将条件设置为数组值以显示我的自定义字符串

如何使用Java 8流将两个或更多不同对象列表的值设置为一个对象?

如何将Angular Material原色设置为自定义值?

如何将具有文档ID的自定义对象设置为扑扑中的Firestore中的集合?

在Dialogflow中,如何使用Webhook将参数设置为自定义值(不想询问用户)

如何自定义将包含0或空白值的Excel单元格格式设置为-?

Java 8流-使用自定义收集器时发生NullPointerException

Javascript:使用自定义键名和值将字符串数组解析为对象

使用带有 java 8 流的自定义收集器时获取 ClassCastException

如何在 Java 中使用自定义值抛出自定义异常?

如何使用 Java 8 合并两个不同类型的自定义对象列表

如何使用 Java 8 将 LinkedHashMap 列表转换为自定义对象列表