gpt4 book ai didi

java - 在大型应用程序中使用更好的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:28 26 4
gpt4 key购买 nike

我正在尝试使用给定二进制字符串的设置位从 EnumValues 中提取值。假设我们的字符串为 1000000(64) 输出应该是 VAL7。我有两种方法可以做到这一点

1.多一个索引j
2.使用stringBuilder.reverse()方法

从两者中我都得到了正确的输出,但不确定哪一个更好
1.速度
2.可读性强,适合大型应用

public class test3 {
public enum EnumValues {
VAL1,
VAL2,
VAL3,
VAL4,
VAL5,
VAL6,
VAL7,
VAL8,
VAL9,
VAL10
}
public static void main(String[] args) {
String stringBit = Long.toBinaryString(1020);//give long input here
System.out.println("stringBit : " +stringBit );
//First method
int len = stringBit.length();
int j=0;//enum index
for(int i=len-1; i>=0; i--,j++){
if(stringBit.charAt(i) == '1'){
String output = EnumValues.values()[j].toString();//final value
System.out.println("val1..."+output);
}
}

//second method
StringBuilder str = new StringBuilder();
str.append(stringBit);
str.reverse();
System.out.println("val...."+str);
int len2 = str.length();
for(int i=0;i<len2;i++){
if(str.charAt(i) == '1'){
String output = EnumValues.values()[i].toString();
System.out.println("out2....." +output);

}

}
}
}

最佳答案

两者都不是特别好,因为它有很多代码。也许可以尝试:

BitSet bitSet = BitSet.valueOf(new long[] { 1020 });
for (int i = bitSet.nextSetBit(0); i >= 0; i = bitSet.nextSetBit(i + 1)) {
System.out.println(EnumValues.values()[i]);
}

或者当您对最低开销感兴趣时:

long longValue = 1020;
for (int i = 0; longValue != 0; longValue >>>= 1, i++) {
if (longValue % 2 == 1)
System.out.println(EnumValues.values()[i]);
}

应该是免分配的。

关于java - 在大型应用程序中使用更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37702350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com