Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

String join words toarray

LeetCode – Reverse Words in a String II (Java)

Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.

The input string does not contain leading or trailing spaces and the words are always separated by a single space.

For example,
Given s = «the sky is blue»,
return «blue is sky the».

Could you do it in-place without allocating extra space?

Java Solution

Your first method is taking up the stack space though in recursion.

public static String reverseWord(String word) <

String [] splitting = word.split(” “);
String [] tempStringArray = new String[splitting.length];

for(int i=0;i Godfred Sabbih

String reverseString(String [ ]s, int index) <
if(index>=s.lenght) return «»;

return s[0]+» «+reverseString(s,index+1);
>

def reverseString(str):
temp = str.split(” “)
res = “”
for i in range(len(temp)):
res += temp[

i] + ” ”
return res[:-1]

Inline without extra space

String reverseWords2(String input) <
int i = input.lastIndexOf(» «);
if(i == -1) <
//no space left, this is the first word
return input;
>

return input.substring(i+1) + » » + reverseWords2(input.substring(0, i));
>

WIth extra space but readable

String reverseWords(String input) <
if(input.isEmpty()) <
return input;
>

//split input into words
String[] wa = input.split(» «);
StringBuilder sb = new StringBuilder();

//create a new string buffer and fill it from backwards
for(int i = wa.length-1; i >=0; i—) <
sb.append(wa[i]);
sb.append(» «);
>

Inline solution no extra space with recursion

String reverseWords2(String input) <
System.out.println(input);
int i = input.lastIndexOf(» «);
if(i == -1) <
//no space left, this is the first word
return input;
>

return input.substring(i+1) + » » + reverseWords2(input.substring(0, i));
>

Solution with extra space

String reverseWords(String input) <
//Read input
//split it into words
if(input.isEmpty()) <
return input;
>

String[] wa = input.split(» «);
StringBuilder sb = new StringBuilder();

//create a new string buffer and fill it from backwards
for(int i = wa.length-1; i >=0; i—) <
sb.append(wa[i]);
sb.append(» «);
>

def reverse(A):
n = len(A)
B = []
for i in range(n):
B.append(A.pop())
return B

def slice_reverse(A, j, k):
A[j:k] = reverse(A[j:k])

def reverseWords(S):
S = list(S)
n = len(S)
j=0
for i in range(n):
if S[i]==’ ‘:
slice_reverse(S, j, i)
j=i+1
slice_reverse(S, j, n+1)
return ”.join(reverse(S))

S = “the sky is blue”
reverseWords(S)

Java 8 solution:

public static void rev1(String[] a) <
String[] result = Stream.iterate(a.length — 1, i -> i — 1)
.limit(a.length)
.map(i -> a[i])
.toArray(String[] :: new);

One line code in JavaScript:

function reverseString(str) <
return str.split(‘ ‘).reverse().join(‘ ‘);
>
var str = «the sky is blue»;
var output = reverseString(str);
document.write(output);

Minus one line:

public static void reverseWords(char[] s) <
int i=0;
for(int j=0; j

// reverse(s, i, s.length-1);

using System.Linq;
var output = string.Join(” “, s.Split(‘ ‘).Reverse());

var input = “ayman ali”;
input = ” ” + input;
var arr = input.ToCharArray();
var output = string.Empty;
var b = 0;
var e = arr.Length;
for (int p = arr.Length – 1; p >= 0; p–)
<
if (arr[p] == ‘ ‘ )// little off beginning of word
<
b = p + 1;
output += input.Substring(b, e – b) + ” “;
e = p ;

public class Rev <

public static void main(String[] args) <
String s = “hello”;
String rev = reverse(s.toCharArray(), ‘ ‘, s.length());
System.out.println(rev);
>

static String rev= “”;
private static String reverse(char[] charArray, char e, int length) <
if(length != 0)
<
if(e != ‘ ‘) rev += e;
reverse(charArray, charArray[–length], length) ;
>
return rev + charArray[0];
>
>

public static String reverse(String s) <
String tmp = new StringBuilder(s).reverse().toString();
char[] in = tmp.toCharArray();
int j = 0;
for (int i = 0; i Sagarika Dusane

String word = “The sky is Blue”;
List wordList = Arrays.asList(word.split(” “));
Collections.reverse(wordList);
word = String.join(” “, (CharSequence[]) wordList.toArray());

Two variant of solution using C#

class Program
<
static string reverseString1(string input)
<
char temp;
char[] s = input.ToCharArray();
for (int i = 0; i Bukary Kandeh

Trimming will get rid of the space between the words, that’s NOT what we want to do. I append space between the words so “sb.length() – 1” just deletes the last space.

Example: String s = “the sky is blue”;

*If you apply the TRIM you’ll get the following: “blueisskythe”.
*My application WITHOUT the “sb.length() – 1”: “blue is sky the ”
*My application WITH the “sb.length() – 1”: “blue is sky the”

setLength() is the most efficient way to get rid of the final space. Basically, it alters the count and overwrites the value we don’t want with a zero byte.

how about trimming the SB instead of setting the length?

funny, I had done something really similar:
public static String reverseWords(String str) <
StringBuilder sb = new StringBuilder();
int limit = str.length();
//from last to first
for (int i = str.length() – 1; i > 0; i–) <
if (str.charAt(i) == ‘ ‘) <
sb.append(str.substring(i + 1, limit)).append(‘ ‘);
limit = i;
>
>
sb.append(str.substring(0, limit));

public class Program
<
public static void Main(string[] args)
<
//Your code goes here
var input = «Hello»;
Console.WriteLine(string.Format(«Before reversing: — <0>«,input));
var inPutArray = input.ToCharArray();
//var reversed = new StringBuilder();
//Reverse the string
for(int i= 0, j = inPutArray.Length — 1; i

var temp = inPutArray[i];
inPutArray[i] = inPutArray[j];
inPutArray[j] = temp;
>
Console.WriteLine(string.Format(«After reversing: — <0>«,new String(inPutArray)));
>
>

public static void ReverseString(String s) <
String[] split = s.split(» «);
StringBuilder sb = new StringBuilder();

for (int i = split.length — 1; i >= 0; i—) <
sb.append(split[i] + » «);
>
System.out.println(sb.setLength(sb.length() — 1).toString());
>

I liked this implementaion. Fast and efficinent.

I think from the moment you have array = string.split(” “); you are already using O(n) space, where n is the number of ‘ ‘ in the string.

String s=»the sky is blue»;
String[] s1=s.split(«s»);

List l1=new ArrayList();
l1=Arrays.asList(s1);
Collections.reverse(l1);
System.out.println(«this-:»+l1);
StringBuilder sb= new StringBuilder();
for(int y=0;y

i think using a stringbuilder or stringbuffer would be better as they expand and contract as opposed to Strings that are immutable. this way, you dont keep allocating new spaces for every new append you do.

String s = “the sky is blue”;
String[] splitted = s.split(” “);
System.out.println(Arrays.stream(splitted).reduce(“”,(a,b)->b+” “+a));

I have written this code and tried to keep it simple. I think I have considered space and time complexity as well at same time. What’s your input about it, please let me know.

public static String stringReverse(String string) <
if(string == null) <
return “”;
>

StringBuilder stringBuilder = new StringBuilder(“”);

for(int i = string.length() – 1; i >= 0; i–) <
if(Character.isWhitespace(string.charAt(i))) <
stringBuilder.append(string.substring(i + 1, string.length() – stringBuilder.length())).append(” “);;
>
>

stringBuilder.append(string.substring(0, string.length() – stringBuilder.length()));
return stringBuilder.toString();
>

public void reverseString() <
String original = “Please reverse me hello world”;
int staticPointer = original.length() – 1;
for (int movingPointer = original.length() – 1; movingPointer >= 0; movingPointer–) <
if (original.charAt(movingPointer) == ‘ ‘) <
int movingPointerTemp = movingPointer + 1;
while (movingPointerTemp NightCoder

private static String reverse(String string) <
// TODO Auto-generated method stub

Строки C#. Классы String и StringBuilder

Методы Join и Split

Методы Join и Split выполняют над строкой текста взаимно обратные преобразования. Динамический метод Split позволяет осуществить разбор текста на элементы. Статический метод Join выполняет обратную операцию, собирая строку из элементов.

Заданный строкой текст зачастую представляет собой совокупность структурированных элементов — абзацев, предложений, слов, скобочных выражений и т.д. При работе с таким текстом необходимо разделить его на элементы, пользуясь специальными разделителями элементов, — это могут быть пробелы, скобки, знаки препинания. Практически подобные задачи возникают постоянно при работе со структурированными текстами. Методы Split и Join облегчают решение этих задач.

Динамический метод Split , как обычно, перегружен. Наиболее часто используемая реализация имеет следующий синтаксис:

На вход методу Split передается один или несколько символов, интерпретируемых как разделители. Объект string , вызвавший метод, разделяется на подстроки, ограниченные этими разделителями. Из этих подстрок создается массив, возвращаемый в качестве результата метода. Другая реализация позволяет ограничить число элементов возвращаемого массива.

Синтаксис статического метода Join таков:

В качестве результата метод возвращает строку, полученную конкатенацией элементов массива items , между которыми вставляется строка разделителей delimiters . Как правило, строка delimiters состоит из одного символа, который и разделяет в результирующей строке элементы массива items ; но в отдельных случаях ограничителем может быть строка из нескольких символов.

Рассмотрим примеры применения этих методов. В первом из них строка представляет сложноподчиненное предложение, которое разбивается на простые предложения. Во втором предложение разделяется на слова. Затем производится обратная сборка разобранного текста. Вот код соответствующей процедуры:

Читать еще:  Яндекс почта переадресация всех писем

Результаты выполнения этой процедуры показаны на рис. 14.3.

Обратите внимание, что методы Split и Join хорошо работают, когда при разборе используется только один разделитель. В этом случае сборка действительно является обратной операцией и позволяет восстановить исходную строку. Если же при разборе задается некоторое множество разделителей, то возникают две проблемы:

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

Если при разборе предложения на слова использовать в качестве разделителя только пробел, то пустые слова не появятся, но запятая будет являться частью некоторых слов.

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

Динамические методы класса String

Операции, разрешенные над строками в C#, разнообразны. Методы этого класса позволяют выполнять вставку, удаление, замену, поиск вхождения подстроки в строку. Класс String наследует методы класса Object , частично их переопределяя. Класс String наследует и, следовательно, реализует методы четырех интерфейсов: IComparable , ICloneable , IConvertible , IEnumerable . Три из них уже рассматривались при описании классов-массивов.

Рассмотрим наиболее характерные методы при работе со строками.

Сводка методов, приведенная в таблице 14.2, дает достаточно полную картину широких возможностей, имеющихся при работе со строками в C#. Следует помнить, что класс string является неизменяемым . Поэтому Replace , Insert и другие методы представляют собой функции, возвращающие новую строку в качестве результата и не изменяющие строку, вызвавшую метод.

3 ways to count words in Java String

You can count words in Java String by using the split() method of String. A word is nothing but a non-space character in String, which is separated by one or multiple spaces. By using regular expression to find spaces and split on them will give you an array of all words in given String. This was the easy way to solve this problem as shown here, but if you have been asked to write a program to count a number of words in given String in Java without using any of String utility methods like String.split() or StringTokenizer then it’s a little bit challenging for a beginner programmer. It’s actually one of the common Java coding questions and I have seen it a couple of times with Java developer interviews of 2 to 4 years of experience. The interviewer put additional constraints like split() is not allowed, you can only use basic methods like charAt() , length() , and substring() along with loop, operators, and other basic programming tools.
In this article, I’ll share all three ways to solve this problem i.e. first by using String’s split() method and regular expression, second by using StringTokenizer and third without using any library method like above. The third one is the most interesting and very difficult to write a complete solution handling all special characters e.g. non-printable ASCII characters. for our purpose, we assume that space character includes tab, space or new line and anything which is considered as a letter by Character.isLetter() is considered as a word.

Btw, if you are looking for more String based coding problems, you can either check here, or you can buy Cracking the Coding Interview book, which is a collection of more than 190 programming questions and solutions from tech giants like Amazon, Google, Facebook, and Microsoft. It also includes questions from service based companies like Infosys, TCS, and Cognizant.

Solution 1 — Counting word using String.split() method
In this solution, we will use the split() method of java.lang.String class to count the number of words in a given sentence. This solution uses the regular expression «\s+» to split the String on whitespace. The split method returns an array, the length of array is your number of words in given String.

If you are new to regular expression in Java, the s is a character class to detect space including tabs, since needs to be escaped in Java, it becomes \s and because there could be multiple spaces between words we made this regular expression greedy by adding + , hence \s+ will find one more space and split the String accordingly. See Core Java Volume 1 — Fundamentals by Cay S. Horstmann to learn more about the split() method of String class. This is also the simplest way to count the number of word in a given sentence.

Solution 2 — Counting word in String using StringTokenizer
Constructs a string tokenizer for the specified string. The tokenizer uses the default delimiter set, which is » tnrf»: the space character, the tab character, the newline character, the carriage-return character, and the form-feed character. Delimiter characters themselves will not be treated as tokens

You can see that we have not given any explicit delimiter to StringTokenizer, it uses the default set of delimiter which is enough to find any whitespace and since words are separated by whitespace, the number of tokens is actually equal to the number of words in given String. See Java How to Program by Dietel for more information on StringTokenizer class in Java.

Solution 3 — Counting word in String without using library method
Here is the code to count a number of words in a given String without using any library or utility method. This is what you may have written in C or C++. It iterates through String array and checks every character. It assume that a word start with a letter and ends with something which is not a letter. Once it encounters a non-letter it increments the counter and starts searching again from the next postion.

Java Program to count a number of words in String

Here is our complete Java program to count a number of words in a given String sentence. It demonstrates all three examples we have seen so far e.g. using String.split() method, using StringTokenizer and writing your own method to count the number of words without using any third party library e.g. Google Guava or Apache Commons.

That’s all about how to count a number of words in Java String. I have shown you three ways to solve this problem, first by using split() method and regular expression, second by using StringTokenizer class and third without using any library method to solve this problem directly e.g. split or StringTokenizer . Depending upon your need, you can use any of these methods. Interviewer usually asks you do it on the third way, so be ready for that. You can also solve more String problems given on Cracking the Code Interview book to gain more practice and confidence.

Other String based coding problems you may like to solve

  • How to reverse a String in place in Java? (solution)
  • How to find all permutations of a given String in Java? (solution)
  • How to check if two given Strings are Anagram in Java? (solution)
  • How to check if a String contains duplicate characters in Java? (solution)
  • How to find the highest occurring word from a given file in Java? (solution)
  • How to count vowels and consonants in given String in Java? (solution)
  • How to check if given String is palindrome or not in Java? (solution)
  • How to remove duplicate characters from String in Java? (solution)
  • How to reverse words in a given String in Java? (solution)
Читать еще:  Ip адреса яндекса

Создание списка, разделенного запятыми, из IList или IEnumerable

Каков самый чистый способ создания списка строковых значений, разделенных запятыми, из IList или IEnumerable ?

String.Join(. ) работает с string[] , поэтому может быть громоздко работать, когда типы, такие как IList или IEnumerable , не могут быть легко преобразованы в строковый массив.

.NET 4 +

Подробные и предварительные версии 4.0.

IEnumerable можно легко преобразовать в строковый массив с помощью LINQ (.NET 3.5):

Достаточно легко написать эквивалентный вспомогательный метод, если вам нужно:

Затем назовите его следующим образом:

Затем вы можете вызвать string.Join . Конечно, вам не нужно использовать вспомогательный метод:

Последний — немного глоток, хотя:)

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

Начиная с .NET 4.0, в string.Join есть больше перегрузок, поэтому вы можете просто написать:

FYI, версия .NET 4.0 string.Join() имеет некоторые дополнительные перегрузки, которые работают с IEnumerable , а не только с массивами, включая который может иметь дело с любым типом T :

Самый простой способ, которым я могу это сделать, — использовать метод LINQ Aggregate :

Я думаю, что самый чистый способ создания списка строковых значений, разделенных запятыми, просто:

Вот полный пример:

Нет необходимости создавать вспомогательную функцию, она встроена в .NET 4.0 и выше.

Так как я достиг этого при поиске для присоединения к определенному свойству списка объектов (а не к ToString()), это дополнение к принятому ответу:

Сравнение по производительности побеждает: «Зачеркни, смотри. Приложи и сделай шаг назад». На самом деле «перечислимое и ручное перемещение дальше» — это то же самое хорошо (рассмотрим stddev).

Здесь другой метод расширения:

Придя немного поздно к этому обсуждению, но это мой вклад. У меня есть IList OrderIds , который нужно преобразовать в CSV-строку, но следующее является общим и работает без изменений с другими типами:

Short and sweet, использует StringBuilder для построения новой строки, сокращает длину StringBuilder на единицу для удаления последней запятой и возвращает CSV-строку.

Я обновил это, чтобы использовать несколько Append() для добавления строки + запятой. От обратной связи Джеймса я использовал Reflector, чтобы посмотреть на StringBuilder.AppendFormat() . Выключается AppendFormat() использует StringBuilder для построения строки формата, что делает ее менее эффективной в этом контексте, чем просто использование нескольких Appends() .

Что-то немного уродливое, но оно работает:

Дает вам CSV из списка после того, как вы дадите ему конвертер (в этом случае d = > d.DivisionID.ToString( «b» )).

Хакки, но работает — может быть сделано в метод расширения, возможно?

Вот так, как я это сделал, используя то, как я это сделал на других языках:

Конкретная необходимость, когда мы должны окружать ‘, например:

У нас есть функция полезности, что-то вроде этого:

Что можно легко использовать для объединения множества коллекций:

Обратите внимание, что у нас есть параметр коллекции перед лямбдой, потому что intellisense затем подбирает тип коллекции.

Если у вас уже есть перечисление строк, все, что вам нужно сделать, это ToArray:

вы можете преобразовать IList в массив с помощью ToArray, а затем запустить команду string.join в массиве.

Их можно легко преобразовать в массив с использованием расширений Linq в .NET 3.5.

Вы также можете использовать что-то вроде следующего после того, как вы его преобразуете в массив, используя один из методов, перечисленных другими:

Мой ответ подобен приведенному выше решению Aggregate, но должен быть меньше количества вызовов, поскольку нет явных вызовов делегатов:

Конечно, можно расшифровать подпись, которая будет независимой от разделителя. Я действительно не поклонник вызова sb.Remove(), и я бы хотел реорганизовать его как прямолинейный цикл while через IEnumerable и использовать MoveNext(), чтобы определить, следует ли писать запятую. Я буду обсуждать это и публиковать это решение, если я натолкнулся на него.

Вот что я хотел изначально:

Не требуется временного хранения массива или списка, а не требуется StringBuilder Remove() или Length— .

String join words toarray

A Java String Array is an object that holds a fixed number of String values. Arrays in general is a very useful and important data structure that can help solve many types of problems. It’s simplicity on how to access contents through index makes it powerful yet user-friendly. Here are some examples on how to use String Array in Java.

String Array Declaration

Square brackets is used to declare a String array. There are two ways of using it. The first one is to put square brackets after the String reserved word. For example:
Another way of declaring a String Array is to put the square brackers after the name of the variable. For example:
Both statements will declare the variable «thisIsAStringArray» to be a String Array. Note that this is just a declaration, the variable «thisIsAStringArray» will have the value null. And since there is only one square brackets, this means that the variable is only a one-dimensional String Array. Examples will be shown later on how to declare multi-dimensional String Arrays.

String Array Declaration With Initial Size

Arrays are usually used when we know how many objects are needed. Hence, arrays are usually declared with an initial size. Here is an example:
This will declare a String Array with 5 elements. Each element can be accessed using index that starts with 0. The fist element is «thisIsAStringArray[0]», the second element is «thisIsAStringArray[1]», and so on. Here is an example of declaring a String Array with size 5 and assigning values to each element:
Note, since there are only 5 elements and index started from 0, the last index will be 4. Or we could use the formula ( array length — 1). This means if we access the index greater than 4, an Exception will be raised. Example:
The code will throw a java.lang.ArrayIndexOutOfBoundsException.

String Array Initialization on Declaration

There are multiple ways to initialize a String Array. Initialization can also be done at the same time as the declaration. Here is an example:
This will create a String Array of length 5. Element at index 0 will have the value «AAA», element at index 1 will have the value «BBB», and so on. Hence, when we run this code:

It will produce this output:

Another syntax to declare and initialize a String array together is by using the new operator. Here is an example:

The behaviour is the same as the example above: «String[] thisIsAStringArray = <"AAA", "BBB", "CCC", "DDD", "EEE">;»

String Array Initialization After Declaration

The code for initializing an array can be separated from the declaration code. This is useful when values are not known during declaration. Here is an example:

Note that the value of the array depends on the value of fruits variable. The array can have the values if fruits is true, or if fruits is false.

Note that initializing an array will override the old contents of the array. For example

The code will have the output below. This is because the old contents , will be discarded and replaced with the new contents.

Also note that even the size of array will be changed if re-initialized. For example:

Will have the following output:

The exception is because the thisIsAStringArray variable will only have 2 elements after the second initialization.

Читать еще:  Войти в почту по адресу

String Array Length/Size

The property length of a String Array can be used to determine the number of elements in an Array. Here is an example usage:
This will have the output:
Because there are 3 elements in the declared array.

Iterate Through String Array

Since the size and contents of a String Array can vary, it is useful to iterate through all the values. Here is an example code using style that can run prior to Java 5.

The code will start from index 0, and continue upto length — 1, which is the last element of the array. This code will run on any version of Java, before of after Java 5

The code will have the output:

Another way is to use the enhanced for loop of Java 5. For example:

The code will have the same output as the previous example:

Test if String Array Contains a Value

When we have an array of Strings, it is usually common to have a scenario where we wish to know if the array contains a specific value. One way to do it is to have custom code:

This code will loop through the array and check one by one if an element is equal to the item being searched for. The output of the code will be:

We can place a break when we found the item, to make it run faster.

The break will stop the loop when we found an element match. We can also factor this out as a separate method, if this will be a commonly used routine:

As shown, the function can be called multiple times because it is re-factored as a utility method. Here is the output of the code:

Add element to String Array

If you have a String array with length 5 and want to add a 6th element, this is not possible because the size of an array is fixed when created. only possible way is to re-create a new String Array with larger capacity to be able to put the new value at the end. Here is an example code:
The example code above started with a String Array of size 3. Another array was created with size larger than 1. The 3 elements were then copied and the new value is added on the last index. The code will print the following result:

We can refactor the logic to a separate function. For example:

This will have the same output as the previous example.

Sort String Array

Another common situation in Java is the need to sort elements of an array. One way to do this is to code our own routine based on some well known algorithm. Here is an example of how to Sort String Array in Java using Bubble Sort:

The code will output the Strings in the array in order alphabetically.

But since sorting is a common programming problem, Java has a built-in solution for this. We can use the sort method in java.util.Arrays class. Here is a shortened example of our code above using Arrays.sort() method:
And the output will be the same, the alphabetically sorted strings in the array.

Convert String Array to a String

For display purposes, it is sometimes required to convert a String Array to a String. The utility class java.util.Arrays has a convenience method for this. Here is an example code for the conversion:

And this will be the output:

The elements are separated by comma in the converted String, and enclosed in square brackets. To implement a custom behaviour, we may implement our own code for that:

We may implement our own that uses a custom delimiter without the square brackets. Here is an example of converting String Array to String with custom delimiter:

The output will use the delimiter dash without square brackets:
We can refactor the logic to a separate method. Here is an example of converting a String Array to String using comma delimiter or any other delimiter:

The output will be:

Convert String Array to List

One dis-advantage of arrays is that the size is fixed. If we need the size of the array to grow, it is better to use List. Fortunately, this is simple — again by using java.util.Arrays. Here is an example code:

Note that reading the Javadoc of asList says:

Returns a fixed-size list backed by the specified array. (Changes to the returned list «write through» to the array.) This method acts as bridge between array-based and collection-based APIs, in combination with Collection.toArray. The returned list is serializable and implements RandomAccess.

This means that you can not add items to the List returned by Arrays.asList method. Hence, this code will raise an Exception:

When you run this, you will encounter a java.lang.UnsupportedOperationException on the line where «WaterMelon» was being added to the list.

To avoid this problem, we can specifically convert the String Array to an ArrayList. Here is a sample code on how to do that:

The code will construct a new ArrayList based on the returned value of Arrays.asList. All items from fixedList will be added to the stringList. And the ArrayList instance has no limitation of being fixed size. Hence, the code that adds «WaterMelon» will not throw any exception.

Convert String Array to Set

The difference between a Set and a list is that a Set cannot contain duplicate elements while a List can. So if we only want elements of a collection without duplicates, Set is a more appropriate data structure. Here is a sample code on how to convert a String Array to a Set:
The output will be:

The list will have four items, as enumerated in declaration. But since there are two Banana’s, the set will only have 3 elements.

Convert list to String Array

If we want the opposite behavior of the sample above, it is also possible to convert a List back to String Array. Here is a sample code that converts a List to String Array:

Note that we need to pass an instance of array to the toArray method. This is to tell the list what type of array it should return.

Two Dimensional String Array in Java

In Java, it is possible to declare an array of arrays — or simply a two-dimensional arrays. This is very useful for storing more complex information. For example, a collection of couples (husband and wife). A couple is composed of two information, the name of the husband, and the name of the wife. If we want to represent an array of couples, then two-dimensional String Array can be used. Here is an example code:

Here, we declared an array of arrays with size 4. We initialize each element with a String Array that represents a pair of husband and wife names.

To access a specific item, we need two index values. For example, to output «Robert», the code should be:

And to access «Josephine», the code should be:

Here is an alternative way of creating a two-dimensional String array and initializing it’s values:

Here, we can think of it as creating a multi-dimensional array where the first dimension is of size 4, and the second dimension is of size 2. The effect is the same as the first example. Which means accessing elements is also the same.

Here is an even shorter example where we declare and initialize a two-dimensional string array in a single statement:

Ссылка на основную публикацию
Adblock
detector