人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaについて質問させて下さい。2次元のString型の配列strA[][]とstrB[][]があります。この両方をマージしたstrC[][]という配列をSystem.arraycopyメソッドを使わずにfor文などで効率よく実装を行いたいです。但し、条件としてどちらもnew String[][]の状態でマージしなければいけない場合があります(どちらもnullでないことは保証されています。)。どうやって実装したらいいか教えていただけませんでしょうか?

●質問者: riceflow
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:2次元 Java String マージ メソッド
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● minkpa
●0ポイント

http://codezine.jp/article/detail/111

◎質問者からの返答

質問の内容が悪かったのでしょうか。。。

配列宣言している内容のデータを別の配列にマージしたいだけなのですが。。。


2 ● lunlumo
●70ポイント

>質問の内容が悪かったのでしょうか。。。

>配列宣言している内容のデータを別の配列にマージしたいだけなのですが。。。

問題意識がどこら辺りにあるか分からないので...。マージするだけであれば二重ループでコピーしていけば良いと思いますが,こういった処理ではうまく行かない様な状況なのでしょうか。

public static String[][] merge(String[][] a, String[][] b) {
int size = Math.max(a.length, b.length);
String[][] merged = new String[size][];
for (int i = 0; i < size; i++) {
int length = (a.length <= i ? 0 : a[i].length) + (b.length <= i ? 0 : b[i].length);
merged[i]= new String[length];
for (int j = 0; j < length; j++) {
if (i < a.length && j < a[i].length) {
merged[i][j] = a[i][j];
} else {
merged[i][j] = b[i][j - (a.length <= i ? 0 : a[i].length)];
}
}
}
return merged;
}
◎質問者からの返答

回答ありがとうございます。

確かに背景が書けてなかったですね。。。単純にもしsystem.arraycopy使わなかった場合に、他の人はどの様なコーディングを書くのかなと知りたかったという興味本位です。正確には三項演算子やMathクラスの使い方があまりわからない子に教えるかつバグの発生しないコードが知りたかったです。ですので、回答して頂いた内容で十分私の求めていた趣旨とあっております(三項演算子とかの部分は別ですが、私が前提書いていなかったので...)。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ