格式化数组中的第一个值

ChokkiAST

我有一种从字符串中提取键值的方法:

  public Map<String, String> extract(String input) {
        return Arrays.stream(input.split("&"))
                .map(subString -> subString.split("="))
                .map(this::convertStringArr)
                .filter(strings -> !strings[0].isBlank())
                .collect(Collectors.toMap(
                        key -> key[0],
                        value -> value[1],
                        (val1, val2) -> val2));
    }

此方法转换密钥:

private String[] convertStringArr(String[] input) {
        String [] arr = new String[input.length];
        for (int i = 0; i < arr.length; i++) {
            arr[0] = convert(input[0]);
            arr[1] = input[1];
        }
        return arr;
    }

和转换传入密钥的方法:

//it's not a real method, it's just imitates iteraction with database, but 100% same functionality
private String convert(String inputs) {
        switch (input) {
            case "book_author":
                return "ga:author";
            case "book_id":
                return "ga:id";
            case "book_source":
                return "ga:marketplace";
            case "book_target":
                return "";
            default:
                return input;
        }
    }

我的主要目标是:从字符串中提取键和值,转换键,过滤空键并将其收集到映射。

这可行,但是我想重构convertStringArr(String[] input)方法,而无需创建新数组,循环等。我该怎么办?

请记住此功能:字符串拆分为数组,每个数组始终包含2个值,[0]-始终是键,[1]-始终是值。我需要在将其收集到地图之前转换密钥,因为没有它,我将拥有一个带有空密钥的地图(这就是为什么我在地图之后有一个过滤器)。

有任何想法吗?

清扫器

您可以这样做:

return Arrays.stream(input.split("&"))
    .map(subString -> subString.split("="))
    .collect(Collectors.toMap(
        key -> convert(key[0]), // call convert here!
        value -> value[1],
        (val1, val2) -> val2
    ));

这样做的一个小问题是,这将使您留下带有""钥匙的地图您可能要删除它:

Map<String, String> map = Arrays.stream(input.split("&"))
    .map(subString -> subString.split("="))
    .collect(Collectors.toMap(
        key -> convert(key[0]),
        value -> value[1],
        (val1, val2) -> val2
    ));
map.remove("");
return map;

或者,如果您不介意convert多次致电,请使用filter

return Arrays.stream(input.split("&"))
    .map(subString -> subString.split("="))
    .filter(x -> !convert(x[0]).isBlank())
    .collect(Collectors.toMap(
        key -> convert(key[0]),
        value -> value[1],
        (val1, val2) -> val2
    ));

无论如何,假设您正在返回地图,则调用代码""无论如何都不会尝试访问该键,因此您可能不需要以任何一种方式将其删除。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到数组之间的第一个匹配项并对其进行格式化

来自分类Dev

格式化Google表格,使其仅显示列中每个值的第一个实例

来自分类Dev

一行中的第一个逗号后,如何以csv格式格式化文件?

来自分类Dev

根据行的第一个单元格的值对excel行进行条件格式化

来自分类Dev

根据 Google 表格中的第一个单元格格式化列中的单元格

来自分类Dev

D3.JS试图格式化轴的第一个刻度的文本

来自分类Dev

有条件地格式化列中值的第一个实例

来自分类Dev

删除数组中的第一个/最后一个值

来自分类Dev

返回数组中的第一个和最后一个值

来自分类Dev

VBA Word-根据单词的第一个字母格式化单词的颜色

来自分类Dev

查找数组中的第一个、最后一个和中间值。返回最大的一个

来自分类Dev

PHP-计算多维数组中第一个元素中的唯一值

来自分类Dev

选择关联数组中的每个第一个数组值

来自分类Dev

Swift 谓词仅匹配值数组中的第一个值

来自分类Dev

数组按第一个值排序

来自分类Dev

数组函数仅返回第一个值

来自分类Dev

选择第一个JSON数组子值

来自分类Dev

获取数组的第一个值

来自分类Dev

在angularjs中的ng-repeat中过滤数组的第一个值

来自分类Dev

比较数组中的值,如果有值匹配,则递增第一个数组中的值

来自分类Dev

如何从关系中更新属性值数组的更新第一个元素?

来自分类Dev

内爆时,PHP数组中的第一个值重复

来自分类Dev

d3数组中缺少第一个值

来自分类Dev

将Angular select ng-init设置为数组中的第一个值

来自分类Dev

SimpleXML对象数组仅在PHP中返回第一个值

来自分类Dev

获取数组中第一个元素的最大值?

来自分类Dev

关联查询结果数组中的第一个值错误

来自分类Dev

从单元格的单元格数组中检索第一个值

来自分类Dev

从复合类型数组中获取第一个值

Related 相关文章

  1. 1

    如何找到数组之间的第一个匹配项并对其进行格式化

  2. 2

    格式化Google表格,使其仅显示列中每个值的第一个实例

  3. 3

    一行中的第一个逗号后,如何以csv格式格式化文件?

  4. 4

    根据行的第一个单元格的值对excel行进行条件格式化

  5. 5

    根据 Google 表格中的第一个单元格格式化列中的单元格

  6. 6

    D3.JS试图格式化轴的第一个刻度的文本

  7. 7

    有条件地格式化列中值的第一个实例

  8. 8

    删除数组中的第一个/最后一个值

  9. 9

    返回数组中的第一个和最后一个值

  10. 10

    VBA Word-根据单词的第一个字母格式化单词的颜色

  11. 11

    查找数组中的第一个、最后一个和中间值。返回最大的一个

  12. 12

    PHP-计算多维数组中第一个元素中的唯一值

  13. 13

    选择关联数组中的每个第一个数组值

  14. 14

    Swift 谓词仅匹配值数组中的第一个值

  15. 15

    数组按第一个值排序

  16. 16

    数组函数仅返回第一个值

  17. 17

    选择第一个JSON数组子值

  18. 18

    获取数组的第一个值

  19. 19

    在angularjs中的ng-repeat中过滤数组的第一个值

  20. 20

    比较数组中的值,如果有值匹配,则递增第一个数组中的值

  21. 21

    如何从关系中更新属性值数组的更新第一个元素?

  22. 22

    内爆时,PHP数组中的第一个值重复

  23. 23

    d3数组中缺少第一个值

  24. 24

    将Angular select ng-init设置为数组中的第一个值

  25. 25

    SimpleXML对象数组仅在PHP中返回第一个值

  26. 26

    获取数组中第一个元素的最大值?

  27. 27

    关联查询结果数组中的第一个值错误

  28. 28

    从单元格的单元格数组中检索第一个值

  29. 29

    从复合类型数组中获取第一个值

热门标签

归档