!! 配列で重複する文字列を見つけるための答えが得られません! !


あなたが私の質問を理解してくれたことを願っています – !
私は出力を期待しています –

[Mahendra, Singh, Dhoni, Virat, Singh, Tracktor, Mahendra]
The dupli Strings are -
Mahendra
Singh 

私が試したこと:

package Functions;
import java.util.*;
import java.util.Arrays;
public class stringString {
public static void main(String[] args) {
String name = "Mahendra Singh Dhoni Virat Singh Tracktor Mahendra";
String[] arr = name.split(" ");
System.out.println(Arrays.toString(arr));
System.out.println("The dupli Strings are - ");
for(int i=0;i<arr.length;i++) {
	for(int j=i+1;j<arr.length;j++) {
		if(arr[i]==arr[j]) {
			System.out.println(arr[j]);
				}
			}
		}
	}
}

解決策 1

ジャワ
if(arr[i]==arr[j]) {

上記のコードは、2 つの参照を比較します。 文字列を比較するには、equals メソッドを使用する必要があります。

ジャワ
if(arr[i].equals(arr[j])) {

解決策 2

交換

見積もり:

if(arr[i]==着[j]) {

ジャワ
if(arr[i].equals(arr[j])) {

それは癖です Java、たとえば、 Java での文字列の比較[^].

解決策 3

これは、String クラスへのポインターではなくハッシュ コードを比較するのに適しています。

ジャワ
if (arr[i].equals(arr[j])) ...;

または、パフォーマンスの問題により、Java.util.* で HashSet を使用できます。アルゴリズムは 2 次であるため、線形バージョン O(n) に置き換えることができます。

ジャワ
import java.util.HashSet;

...

HashSet<String> strings = new HashSet<>();

for (int i = 0; i < arr.length; ++i) {
  if (strings.contains(arr[i])) { // check if it's already in the hash set
    System.out.println("Duplicate found: " + arr[i]);
  }

  strings.add(arr[i]); // add the string to hash set
}



Source link

コメント

タイトルとURLをコピーしました