Рубрики
Без рубрики

Сравнение строк Java

Сравнение строк Java, Сравнение двух строк в java, сравнение строк java в алфавитном порядке, сравнение строк java лексикографически, компаратор строк java, сравнение строк java без учета регистра, сравнение строк java, сравнение строк java игнорирует пример.

Автор оригинала: Pankaj Kumar.

Сравнение строк Java означает лексикографическую проверку того, какая строка идет первой. Иногда требуется сравнить две строки, чтобы можно было отсортировать коллекцию строк. Например, сортировка имени учащихся, чтобы оно могло быть опубликовано по порядку и хорошо выглядеть.

Сравнение строк Java

  1. С помощью
  2. Использование метода equals()
  3. Использование метода compareTo()
  4. Использование метода compareToIgnoreCase()
  5. Использование java.text.Collator Метод сравнения()

Давайте подробно рассмотрим каждый из этих способов сравнения строк.

Сравнение строк Java с использованием

Когда оператор double equals используется для сравнения двух объектов, он возвращает true , когда они ссылаются на один и тот же объект, в противном случае false . Давайте рассмотрим некоторые фрагменты кода для использования сравнения строк в java.

String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println(s1 == s2); //true
System.out.println(s1 == s3); //false
s3 = s3.intern();
System.out.println(s1 == s3); //true

Как мы знаем, когда строковый литерал создается с использованием двойных кавычек, они попадают в Пул строк . Таким образом, s1 и s2 на самом деле ссылаются на один и тот же объект в пуле строк, следовательно, s1==s2 вернет true .

Когда строка создается с помощью оператора new, она создается в пространстве кучи. S1 и s2 относятся к разным объектам, и, следовательно, s1==s3 вернет false .

Затем, когда мы вызываем метод intern() на s3, он возвращает ссылку с тем же значением из пула строк. Поскольку у нас уже есть “abc” в пуле строк, s3 также получает ту же ссылку. Итак, наконец s1==s3 вернет true .

Сравнение строк Java с помощью метода equals()

Обратите внимание, что String является неизменяемым классом, поэтому сравнивать их с ним не имеет смысла. Когда мы пытаемся сравнить значения двух строк, чтобы быть равными или нет, лучше использовать метод equals () . Если вы хотите проверить равенство с учетом регистра, то вы можете использовать метод equalsIgnoreCase () . Ниже фрагмент кода показывает примеры сравнения строк с использованием метода equals() и equalsIgnoreCase () .

String s1 = "abc";
String s2 = "abc";
String s3 = new String("ABC");
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //false
System.out.println(s1.equalsIgnoreCase(s3)); //true

Сравнение строк Java с использованием метода compareTo()

Иногда мы не хотим проверять равенство, нас интересует, какая строка лексикографически стоит первой. Это важно, когда мы хотим отсортировать коллекцию строк в порядке их появления в словаре. Класс Java String реализует сопоставимый интерфейс, и метод compareTo() используется для сравнения экземпляра строки с другой строкой.

Если эта строка предшествует переданному аргументу, она возвращает отрицательное целое число, в противном случае положительное целое число. Метод String compareTo() возвращает 0, если обе строки равны.

Сравнение основано на значении Юникода каждого символа в строках. Если две строки разные, то либо они имеют разные символы в некотором индексе, который является допустимым индексом для обеих строк, либо их длины различны, либо и то, и другое. Предполагая, что индекс ” n ” -это место, где символы отличаются, тогда compareTo() вернет this.charAt(n) - строку аргумента.charAt(n) .

Если нет позиции индекса, в которой они различаются, то более короткая строка лексикографически предшествует более длинной строке. В этом случае метод compareTo() возвращает разницу длин строк, т. е. this.length()-строка аргумента.длина() .

Давайте рассмотрим некоторые фрагменты кода для сравнения строк java с помощью метода compareTo ().

String str = "ABC";
System.out.println(str.compareTo("DEF")); //-3 (Integer.valueOf('A') - Integer.valueOf('D'))
System.out.println(str.compareTo("ABC")); //0 (equal string)
System.out.println(str.compareTo("abc")); //-32 (Integer.valueOf('A') - Integer.valueOf('a'))
System.out.println(str.compareTo("AB")); //1 (difference in length)

Просто просмотрите приведенные выше фрагменты кода, их легко понять, основываясь на концепции, описанной выше.

Сравнение строк Java с использованием метода compareToIgnoreCase()

Метод Java String compareToIgnoreCase() аналогичен методу compareTo (), за исключением того, что регистр игнорируется. Давайте рассмотрим простой пример, в котором мы сравним две входные строки, предоставленные пользователем.

package com.journaldev.string;

import java.util.Scanner;

public class JavaStringCompare {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("Enter First String:");
		String first = sc.nextLine();
		System.out.println("Enter Second String:");
		String second = sc.nextLine();
		sc.close();

		System.out.println(first.compareTo(second));

		System.out.println(first.compareToIgnoreCase(second));

	}

}

На рисунке ниже показан результат выполнения вышеуказанной программы сравнения строк.

Сравнение строк Java с использованием класса Collator

Для сравнения с конкретным языком мы должны использовать java.text.Сортировщик класс. Наиболее важной особенностью Collator является возможность определять наши собственные правила сравнения. Давайте рассмотрим простой пример использования Collator для сравнения строк.

package com.journaldev.string;

import java.text.Collator;
import java.text.ParseException;
import java.text.RuleBasedCollator;
import java.util.Locale;

public class JavaCollatorExample {

	public static void main(String[] args) throws ParseException {
		Collator collator = Collator.getInstance();
		Collator collatorFR = Collator.getInstance(Locale.FRANCE);

		System.out.println(collator.compare("X", "Z")); // -1
		System.out.println(collatorFR.compare("X", "Z")); // -1

		String rules = "< Z < X";
		RuleBasedCollator rbc = new RuleBasedCollator(rules);

		System.out.println(rbc.compare("X", "Z")); // 1
	}
}

Обратите внимание, что "< Z < X" указывает пользовательское правило, согласно которому Z стоит перед X, помимо правила естественного порядка. Вот почему результат изменился в последнем сравнении.

Это все для разных способов сравнения двух строк в java-программе.

Ссылки: Collator API Doc , String API Doc