Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有任何方法可以提高此代码段的效率?_Java_Loops - Fatal编程技术网

Java 是否有任何方法可以提高此代码段的效率?

Java 是否有任何方法可以提高此代码段的效率?,java,loops,Java,Loops,我正在编写一些代码,其中有这个代码段 { user = "B"; indice = 21; switch (user) { case "A": A[indice - 1] = "X"; break; case "B": B[indice - 1] = "X"; break; case "C": C[in

我正在编写一些代码,其中有这个代码段

{

    user = "B";
    indice = 21;

    switch (user) {
        case "A":
            A[indice - 1] = "X";
            break;
        case "B":
            B[indice - 1] = "X";
            break;
        case "C":
            C[indice - 1] = "X";
            break;

    }

}
我想知道是否有一种可能的方法可以使这段代码更有效,这样我就不必重写它X amount次,也可以有更多的值比我设置的交换机的amount次,任何帮助都会有很多建议都会有很大帮助

创建
映射
,放置数组
a
B
C
,然后使用此代码:

Map<String,String[]> arrayByName = new HashMap<String,String[]>();
arrayByName.put("A", A);
arrayByName.put("B", B);
arrayByName.put("C", C);
...
arrayByName.get(user)[indice-1] = "X";
Map arrayByName=newhashmap();
arrayByName.put(“A”,A);
arrayByName.put(“B”,B);
arrayByName.put(“C”,C);
...
arrayByName.get(用户)[indice-1]=“X”;

如果开关的大小写总是连续的(例如,
“A”、“B”、“C”
),并且总是单个字符,那么您可以按照

String[][] master = {A, B, C};

...

master[user.charAt(0) - 'A'][indice - 1] = "X";

好吧,如果您主要关心的不是性能,也许您可以尝试使用反射。我认为这里没有足够的信息。为了提高效率,有多种方法可以进行打包,但这样做需要我们了解A、B和C数组,以及X的性质,以及用户值“B”和数组B之间的对应关系是否可以以适合其用途的方式进行不同的表示。是的,通过反射,你可以动态获取对象的属性,然后你可以给它赋值谢谢!希望我能实现这个解决方案,非常感谢。如果效率更高,性能更好,这个方法比原来的解决方案慢得多。三项的HasMap比简单数组中的序列搜索慢。说到这里,最初的解决方案直接使用了数组,所以我认为不可能编写更好的代码。我不认为性能是我正在编写的代码的一个问题,因为我只是在学习,但为了按照我编写的方式来做,我必须有3个开关,所有开关都包含12个案例,我想也许有更好的方法来学习经验,谢谢你的建议!