Программирование на языке Java

       

Упорядочение


Упорядочение

Зачастую бывает недостаточно просто знать, являются ли две строки идентичными. Для приложений, в которых требуется сортировка, нужно знать, какая из двух строк меньше другой. Для ответа на этот вопрос нужно воспользоваться методом compareTo класса String. Если целое значение, возвращенное методом, отрицательно, то строка, с которой был вызван метод, меньше строки-параметра, если положительно — больше. Если же метод compareTo вернул значение 0, строки идентичны. Ниже приведена программа, в которой выполняется пузырьковая сорти­ровка массива строк, а для сравнения строк используется метод compareTo. Эта программа выдает отсортированный в алфавитном порядке список строк.

class SortString {

static String arr[] = {"Now", "is", "the", "time", "for", "all",   

                       "good", "men", "to", "come", "to", "the",    

                       "aid", "of", "their", "country" };

public static void main(String args[]) {



for (int j = 0; i < arr.length; j++) {

     for (int i = j + 1; i < arr.length; i++) {

          if (arr[i].compareTo(arr[j]) < 0) {

              String t = arr[j];

              arr[j] = arr[i];

              arr[i] = t;

          }

     } 

     System.out.println(arr[j]);




}



} }



indexOf и lastIndexOf



В класс String включена поддержка поиска определенного символа или подстроки, для этого в нем имеются два метода — indexOf и lastIndexOf. Каждый из этих методов возвращает индекс того символа, который вы хотели найти, либо индекс начала ис­комой подстроки. В любом случае, если поиск оказался неудачным ме­тоды возвращают значение -1. В очередном примере показано, как пользоваться различными вариантами этих методов поиска.

class indexOfDemo {



public static void main(String args[]) {



String s = "Now is the time for all good men " +



           "to come to the aid of their country " +



           "and pay their due taxes.";



System.out.println(s);



System.out.println("indexOf(t) = " + s.indexOf('f’));



System.out.println("lastlndexOf(t) = " + s.lastlndexOf('f’));



System.out.println("indexOf(the) = " + s.indexOf("the"));



System.out.println("lastlndexOf(the) = " + s.lastlndexOf("the"));



System.out.println("indexOf(t, 10) = " + s.indexOf('f’ , 10));



System.out.println("lastlndexOf(t, 50) = " + s.lastlndexOf('f’ , 50));



System.out.println("indexOf(the, 10) = " + s.indexOf("the", 10));



System.out.println("lastlndexOf(the, 50) = " + s.lastlndexOf("the", 50));



} }



Ниже приведен результат работы этой программы. Обратите внимание на то, что индексы в строках начинаются с нуля.

С:> java indexOfDemo

Now is the time for all good men to come to the aid of their country



and pay their due taxes.



indexOf(t) = 7



lastlndexOf(t) = 87



indexOf(the) = 7



lastlndexOf(the) = 77



index0f(t, 10) = 11



lastlndex0f(t, 50) = 44



index0f(the, 10) = 44



lastlndex0f(the, 50) = 44



 



Модификация строк при копировании



Поскольку объекты класса String нельзя изменять, всякий раз, когда вам захочется модифицировать строку, придется либо копировать ее в объект типа StringBuffer, либо использовать один из описываемых ниже методов класса String, которые создают новую копию строки, внося в нее ваши изменения.



 



substring



Вы можете извлечь подстроку из объекта String, используя метод sub­string. Этот метод создает новую копию символов из того диапазона ин­дексов оригинальной строки, который вы указали при вызове. Можно указать только индекс первого символа нужной подстроки — тогда будут скопированы все символы, начиная с указанного и до конца строки. Также можно указать и начальный, и конечный индексы — при этом в новую строку будут скопированы все символы, начиная с первого ука­занного, и до (но не включая его) символа, заданного конечным индек­сом.

"Hello World".substring(6) -> "World"



"Hello World".substring(3,8) -> "lo Wo"



 



concat



Слияние, или конкатенация строк выполняется с помощью метода concat. Этот метод создает новый объект String, копируя в него содер­жимое исходной строки и добавляя в ее конец строку, указанную в параметре метода.


Содержание раздела