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

回答の条件
  • 1人2回まで
  • 登録:2009/01/19 22:42:15
  • 終了:2009/01/26 22:45:02

回答(2件)

id:minkpa No.1

minkpa回答回数4178ベストアンサー獲得回数552009/01/22 02:54:42

id:yoneyore

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

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

2009/01/24 17:38:00
id:lunlumo No.2

lunlumo回答回数107ベストアンサー獲得回数142009/01/24 22:27:14

ポイント70pt

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

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

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

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;
}
id:yoneyore

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

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

2009/01/25 23:49:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません