0

私は社会保障番号を操作しています。入力="123456789"出力="896745123"

入力から最初の3桁(つまり123)を取得し、最後の2桁の「89」と交換してから「45」を「67」と交換します。以下は、toCharArrayを使用しているコードです。しかし、私はそれが好きではありませんでした。このメソッド(テストではない)には、一度に多くのユーザーがアクセスできます。私は、パフォーマンス、読みやすさ、およびトレードセーフなソリューションの点でより優れたものを探していました。

私はあなたの助けに感謝します。

@Test
    public void testSSNString(){

        String original="123456789";
        String result="896745123";
        char[] charResult=original.toCharArray();

        char temp=charResult[6];
        charResult[6]=charResult[0];
        charResult[0]=charResult[7];
        charResult[7]=charResult[1];
        charResult[1]=charResult[8];
        charResult[8]=charResult[2];
        charResult[2]=charResult[5];
        charResult[5]=charResult[4];
        charResult[4]=charResult[3];
        charResult[3]=temp;

        assertEquals(original.toCharArray(),charResult);

    }
4

1 に答える 1

1

あなたが与えた方法は、本質的に、パフォーマンスの点でJavaでできる最善の方法です。配列の使用は、を使用するよりも高速ですStringBuilder

読みやすさを向上させるために、並べ替えられた出力用の新しい配列を作成するなど、いくつかの小さな変更を加えるだけです。

@Test
public void testSSNString() {
  String original = "123456789";
  String expected = "896745123";

  char[] in = original.toCharArray();
  char[] out = new char[9];
  out[0] = in[7];
  out[1] = in[8];
  out[2] = in[5];
  out[3] = in[6];
  out[4] = in[3];
  out[5] = in[4];
  out[6] = in[0];
  out[7] = in[1];
  out[8] = in[2];

  assertEquals(expected.toCharArray(), out);
}
于 2012-05-10T21:18:36.450 に答える