たとえば、次があるとします。
String s = "Alexander";
この場合、以下を確認するとより効率的です。
if(s.contains("Alexander"))
return true;
また
if(s.equals("Alexander"))
return true;
これは基本的な例にすぎないことに注意してください。私が知る必要があるのは、メソッドのルートを理解することだけです..どちらがより効率的で高速ですか?
たとえば、次があるとします。
String s = "Alexander";
この場合、以下を確認するとより効率的です。
if(s.contains("Alexander"))
return true;
また
if(s.equals("Alexander"))
return true;
これは基本的な例にすぎないことに注意してください。私が知る必要があるのは、メソッドのルートを理解することだけです..どちらがより効率的で高速ですか?
メモ用です ;-)
String string = "Alex";
long now = System.currentTimeMillis();
for (int n = 0; n < 100000000; n++) if (string.contains("Alexander")) ;
System.out.println("Time: " + (System.currentTimeMillis() -now));
now = System.currentTimeMillis();
for (int n = 0; n < 100000000; n++) if (string.equals("Alexander")) ;
System.out.println("Time: " + (System.currentTimeMillis() -now));
結果:
Time: 1720
Time: 756
これ:
return s.equals("Alexander");
これらは2つの異なる方法であるため、それらを比較することが非常に現実的かどうかはわかりません. ただし、すでに説明したように、ではターゲット値の文字列をcontains()
実際に検索equals()
する追加の手順を実行しますが、単純に 2 つの文字列が同じかどうかをチェックします。
equals
は、両方の文字列の先頭から始まる文字列を比較するだけでよいため、よりcontains
高速です。s
"Alexander"
s
でもそれを無視して…
if (s.equals("Alexander"))
そうでなければあなたがしなければならないので、より効率的になります
if (s.contains("Alexander") && "Alexander".contains(s))
平等を保証する。
Equalsはより効率的で、文字列が一致するかどうかのみをチェックします。 含むは、文字列内のそのテキストを検索します。
java String.java のコードを見ると、最初のものは最初に文字列のサイズをチェックし、次に各文字を 1 つずつ比較するため、Equals
より効率的であることがわかります。Contains
一方、文字列間の特定の一致を検索Contains
するメソッド を呼び出します。indexOf
両方の方法の目的は完全に異なります。equals
文字列間の等価性をテストするために使用する必要があります。