如何 Java 将多个条件从 int 数组映射到字符串数组

杰基鲁

嗨,伙计们,你能帮我吗?我在这里遇到了问题,

我有清单书:

1.数学 Rp.15.000

2.科学 Rp.18.000

3.地质学 Rp.16.000

4.生物学 Rp.12.000

用户输入他选择的书号,然后他得到了数组

int[] arrayNumberBookTake = {1,2,4};

然后我想将数组的值更改为新值,这取决于列表中的价格

int[] listBooktoPrice= Arrays.stream(arrayNumberBookTake).map(i -> i == 1 ? 15000 : i == 2 ? 18000 : i == 3 ? 16000 : i == 4 ? 12000 : i).toArray();

它工作和数组 listBooktoPrice 的输出:

[15000, 18000, 12000]

现在我想创建一个新数组,它从 arrayNumberBookTake 转换为 String

String[] nameBookTake = Arrays.stream(arrayNumberBookTake).map(i -> i == 1 ? "Math" : i == 2 ? "Sains " : i == 3 ? "Geologi" : i == 4 ? "Biologi" : i).toArray();

但该代码不起作用,我想要这样的数组 nameBookTake:

{"Math", "Sains", "Geologi"}

数组 nameBookTake 应取决于数组 arrayNumberBookTake 并与顶部的列表簿匹配。

我希望你们明白我的意思,谢谢你们:)

约斯特·帕彭多普

您的最后一个条件以参数 结尾i这是一个int,不是一个String因此数组不均匀;不允许Arrayof添加整数String

解决方案:删除最后一个条件周围的"Biologi".

此外,Java 流在原语(如int)和对象(如String之间有所不同要将 转换IntStreamStreamof String,可以使用mapToObj,并通过传递String[]to的构造函数来收集toArray()

像这样:

        String[] nameBookTake = Arrays.stream(arrayNumberBookTake)
                .mapToObj(i -> i == 1 ? "Math" : i == 2 ? "Sains " : i == 3 ? "Geologi" : "Biologi" )
                .toArray(String[]::new);

这回答了你的问题。

然而:正如 Andy Turner 指出的那样,以这种方式使用条件是一种不好的做法。更好的做法是使用开关,如下所示:

        String[] nameBookTake = Arrays.stream(arrayNumberBookTake)
                .mapToObj( i -> switch( i )
                        {
                            case 1 -> "Math";
                            case 2 -> "Sains";
                            case 3 -> "Geologi";
                            case 4 -> "Biologi";
                            default -> "Unknown book!";
                        } )
                .toArray(String[]::new);

更好的是将 Book 的属性捆绑到其单独的类中,在本例中为 an Enum,从而产生完整的解决方案:

@Log4j2
public class Main
{
    public static void main( String[] args )
    {
        int[] arrayNumberBookTake = {1,2,4};
        int[] listBooktoPrice= Arrays.stream(arrayNumberBookTake)
                .map( i -> Books.values()[ i ].price )
                .toArray();

        String[] nameBookTake = Arrays.stream(arrayNumberBookTake)
                .mapToObj( i -> Books.values()[ i ].name  )
                .toArray(String[]::new);
    }
}

enum Books
{
    Math("Math", 15_000 ),
    Sains("Sains", 18_000 ),
    Geologi( "Geologi", 16_000 ),
    Biologi( "Biologi", 12_000 );

    String name;
    int price;

    Books( String name, int price )
    {
        this.name = name;
        this.price = price;
    }
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将字符串数组映射到新的字符串数组?

将数组映射到int Java

如何在Java中将函数映射到字符串数组?

如何将字符串转换为位然后转换为int数组-Java

如何将字符串转换为数组(int和字符串数组)?

将字符串转换为Java中的Int数组

Ruby:将字符串数组映射到数组数组

如何将数组中的Int导入字符串?

如何将文件数组以及java脚本中的其他字符串/int变量传递给php

将字符串数组映射到单个数组

将字符串数组映射到特定对象数组

如何将字符串映射到Java中的函数?

如何准确地将字符串映射到Java中的枚举?

如何将Java数组字符串分配给javascript数组字符串?

将 PIN 映射到字符串数组和从字符串数组映射

如何将字符串数组返回给Java JNI

如何在Golang中将字符串类型数组的值映射为int类型数组?

将数组的字符串表示形式转换回Java中的int数组

将字符串数组转换为摆脱这些逗号java的int数组

AutoMapper-将空字符串映射到int

如何使用 valueOf 将字符串数组转换为 int 数组?

如何将多维int数组转换为多维字符串数组

如何将异构JSON数组映射到Java对象?

使用AutoMapper将字符串数组映射到对象

将字典映射到数组到字符串

Python-将字符串映射到布尔数组

字符串到int数组[] []-JAVA

如何将字符串(单词)添加到字符串[]数组?Java,输入

Java:如何将JSON字符串参数解析为字符串和数组?