- - PR -
指定した値をArrayListのIndexに割り当て
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-19 15:50
C#初心者です。お世話になります。
下記@の数値毎にArrayListのインデックスを割り当て て挿入したいのですが、 下記ソースはIndexがないのでやはり落ちてしまいます。 なにか便利な方法があればご教授願います。 [ハッシュテーブルの中身] [ArrayListの中身] キー 値 Index 1回目 "ABC,5,2" "a" [5] [0]"a" 2回目 "ACB,2,2" "b" [1]"d" 3回目 "BCA,3,2" "c" => [2] [0]"b" 4回目 "AAA,5,0" "d" [3] [0]"c" 5回目 "BBB,1,2" "e" 続く.. | |_____ @ [ソース] foreach (string val in HashTbl.Keys) { sp3 = val.Split(','); arylst.Insert(int.Parse(sp3[1]), val); } | ||||||||
|
投稿日時: 2007-02-19 16:46
arylstの長さがint.Parse(sp3[1])まで達してないってことですよね? 単純に、達するまでAddする処理を入れればいいんじゃないですか? | ||||||||
|
投稿日時: 2007-02-19 17:18
返答ありがとうございます。
あるHashTableのキーが下記の形式で格納されていまして、 2番目のカンマの"5" をArrayListのインデックスにしたいのです。 これをAddしてしまうと"0"で割り当てられる ということなのですが... 説明が下手で申し訳ありません。 "ABC,5,2" | ||||||||
|
投稿日時: 2007-02-19 17:58
[5] [0]"a" とか => [2] [0]"b" の意味がよくわかりませんでした。
例えば最初にInsertするときに、arylstの中身が1個もないのにIndex=5の位置に 入れようとするからエラーになるんですよね。だったらあらかじめ足りない分を arylst.Add とかして入れてあげれば(中身はnullでもなんでも)いいんじゃない?と言いました。 ただ、例えば中身が5こ(Index=0〜4ですね)あったとして arylst.Insert(3, val); としたら、index=5 の位置にあった中身が index=6 の位置に移動してしまいますよ? ([追記]ぁ、、中身5個だったらindex=5の位置にはないかorz) そう考えると、Indexの最大値を割り出しておいて最初に(この場合foreachより前で)、 その分の中身をAddしておいて arylst[index]=val; とするほうがいいと思います。 [ メッセージ編集済み 編集者: べる 編集日時 2007-02-20 13:35 ] | ||||||||
|
投稿日時: 2007-02-19 18:14
返答ありがとうございます。
おっしゃるとおりに中身が空のArrayListを先に作ります。 わかりにくい説明に付き合っていただいてありがとうございます。 | ||||||||
|
投稿日時: 2007-02-19 19:44
しまった。終わっちゃったよ。
BBコード使いましょう。投稿時に説明へのリンクがあります _________________ |
1