-3

たとえば、次があるとします。

String s = "Alexander";

この場合、以下を確認するとより効率的です。

if(s.contains("Alexander"))
return true;

また

if(s.equals("Alexander"))
return true;

これは基本的な例にすぎないことに注意してください。私が知る必要があるのは、メソッドのルートを理解することだけです..どちらがより効率的で高速ですか?

4

6 に答える 6

6

メモ用です ;-)

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
于 2013-04-24T19:07:06.887 に答える
3

これ:

return s.equals("Alexander");
于 2013-04-24T19:01:07.143 に答える
1

これらは2つの異なる方法であるため、それらを比較することが非常に現実的かどうかはわかりません. ただし、すでに説明したように、ではターゲット値の文字列をcontains()実際に検索equals()する追加の手順を実行しますが、単純に 2 つの文字列が同じかどうかをチェックします。

于 2013-04-24T19:09:48.907 に答える
1

equalsは、両方の文字列の先頭から始まる文字列を比較するだけでよいため、よりcontains高速です。s"Alexander"s

でもそれを無視して…

if (s.equals("Alexander"))

そうでなければあなたがしなければならないので、より効率的になります

if (s.contains("Alexander") && "Alexander".contains(s))

平等を保証する。

于 2013-04-24T19:00:45.863 に答える
1

Equalsはより効率的で、文字列が一致するかどうかのみをチェックします。 含むは、文字列内のそのテキストを検索します。

于 2013-04-24T19:01:29.503 に答える
1

java String.java のコードを見ると、最初のものは最初に文字列のサイズをチェックし、次に各文字を 1 つずつ比較するため、Equalsより効率的であることがわかります。Contains一方、文字列間の特定の一致を検索Containsするメソッド を呼び出します。indexOf

両方の方法の目的は完全に異なります。equals文字列間の等価性をテストするために使用する必要があります。

于 2013-04-24T19:01:51.860 に答える