решение для биграмм
Строка str инициализируется словами «Я являюсь образцом строки и буду размечена в пространстве».Затем строка разбивается на токены с помощью StringTokenizer, который возвращает массив строк, например «I», «am», «sample» и т. Д. *
. Проверяется, чтобы массив строк содержал как минимум 2слова, так как слово не может сделать биграмм.Итак, вы перебираете массив строк, , если это первый раз, проходящий через цикл while, строка s1 инициализируется первым элементом в массиве строк.Затем строка s2 инициализируется вторым элементом в массиве, а s1 и s2 объединяются в форму s3, которая помещается в arrayList.
s1 = "I";
s2 = "am"
s3 = s1 + " " + s2; //makes s3 = "I am"
После этого значение, которое было в s2, устанавливается в s1, а в s2 устанавливается пустая строка.Это заставляет последний (второй) элемент в биграмме перемещаться в первую позицию, освобождая место для другого элемента, чтобы занять s2 в следующей итерации.Теперь, когда вы перебираете массив остальных значений, только s2 будет присвоено значение.
import java.util.*;
class Test
{
public static void main(String [] args)
{
String str = "I am sample string and will be tokenized on space";
ArrayList<String> bigrams = new ArrayList<String>();
StringTokenizer itr = new StringTokenizer(str);
if(itr.countTokens() > 1)
{
System.out.println("String array size : " + itr.countTokens());
String s1 = "";
String s2 = "";
String s3 = "";
while (itr.hasMoreTokens())
{
if(s1.isEmpty())
s1 = itr.nextToken();
s2 = itr.nextToken();
s3 = s1 + " " + s2;
bigrams.add(s3);
s1 = s2;
s2 = "";
}
}
else
System.out.println("Tokens is 1 or 0");
int i = 0;
while (i < bigrams.size())
{
System.out.println(bigrams.get(i));
i++;
}
}
}