ぺんぎんらぼ

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です。たまに絵を描きます。

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です

Javaで文字列と配列を変換する方法

文字列 ⇒ 配列

せっかくなので、文字列を配列(String型)にするだけでなく、さらに配列(Byte型)に。

import org.apache.commons.lang3.StringUtils;
 
/** カンマで連結された文字列(数値) ⇒ 配列(String型) ⇒ 配列(Byte型) */
 
// カンマで連結された文字列
String joinedId = "1,3,5,7,9,11";
 
// カンマで連結された文字列 ⇒ String型の配列
String[] parsedIdArray = StringUtils.split(StringUtils.defaultString(joinedId), ',');
 
// 結果格納用の配列(Byte型)
Byte[] idArray = new Byte[parsedIdArray.length];
 
// String型の要素 ⇒ Byte型の要素
for (int index = 0; index < idArray.length; index++) {
    idArray[index] = Byte.parseByte(parsedIdArray[index]);
}
 
// 出力して確認
for (int index = 0; index < idArray.length; index++) {
    System.out.println(idArray[index]);
}

9行目でStringUtilsのdefaultString()を使っているのは、
変数joinedIdがnullだった場合に空文字(“”)に変換してもらって、
NullPointerExceptionの発生を防ぐためです。

あと、19行目からの出力処理ですが、
JavaScriptの場合は、Array型のインスタンスに対して、toString()するだけで、
そのまま要素をカンマ区切りの文字列として出力してくれますが、
Javaの場合はidArray.toString()とすると、「[Ljava.lang.Byte;@3d4eac69」といったオブジェクト情報?が出力されてしまいます。

配列 ⇒ 文字列

せっかくなので、配列(Byte型)からスタートして、配列(String型)にして、文字列に。

import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
 
/** 配列(Byte型) ⇒ 配列(String型) ⇒ カンマで連結された文字列 */
 
// 配列(byte型)
Byte[] idArray = new Byte[] { 1, 3, 5, 7, 9, 11 };
 
// NullPointerException防止。idArrayがnullの場合だけ、要素数0のバイト配列をnewして返してくれる。
Byte[] parseKeys = ObjectUtils.defaultIfNull(idArray, new Byte[0]);
 
// 配列(String型)
String[] parsedId = new String[parseKeys.length];
 
// 一つずつ変換
for (int index = 0; index < parseKeys.length; index++) {
    parsedId[index] = Byte.toString(parseKeys[index]);
}
 
// カンマで連結された文字列
String joinedId = StringUtils.join(parsedId, ',');
 
// 結果の確認
System.out.println(joinedId);