- PR -

指定した値をArrayListのIndexに割り当て

1
投稿者投稿内容
ぽよぽよ
会議室デビュー日: 2007/02/07
投稿数: 9
投稿日時: 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);

}
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-02-19 16:46
引用:
[ハッシュテーブルの中身] [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" 続く..

この表の特に右側の意味がよくわかりませんが、
arylstの長さがint.Parse(sp3[1])まで達してないってことですよね?
単純に、達するまでAddする処理を入れればいいんじゃないですか?
ぽよぽよ
会議室デビュー日: 2007/02/07
投稿数: 9
投稿日時: 2007-02-19 17:18
返答ありがとうございます。

あるHashTableのキーが下記の形式で格納されていまして、
2番目のカンマの"5" をArrayListのインデックスにしたいのです。
これをAddしてしまうと"0"で割り当てられる
ということなのですが... 説明が下手で申し訳ありません。

"ABC,5,2"
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-02-19 17:58
引用:
あるHashTableのキーが下記の形式で格納されていまして、
2番目のカンマの"5" をArrayListのインデックスにしたいのです。
これをAddしてしまうと"0"で割り当てられる
ということなのですが... 説明が下手で申し訳ありません。

"ABC,5,2"

はい、そこまでは何とかわかりました。その右の
[5] [0]"a"
とか
=> [2] [0]"b"
の意味がよくわかりませんでした。

引用:
下記ソースはIndexがないのでやはり落ちてしまいます。

どんなエラーで落ちますか?多分IndexOutOfRangeExceptionですよね?

例えば最初に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/07
投稿数: 9
投稿日時: 2007-02-19 18:14
返答ありがとうございます。

引用:

そう考えると、Indexの最大値を割り出しておいて最初に(この場合foreachより前で)、
その分の中身をAddしておいて arylst[index]=val; とするほうがいいと思います。



おっしゃるとおりに中身が空のArrayListを先に作ります。
わかりにくい説明に付き合っていただいてありがとうございます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-19 19:44
しまった。終わっちゃったよ。
引用:

ぽよぽよさんの書き込み (2007-02-19 15:50) より:
コード:
[ハッシュテーブルの中身]      [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"               続く..
           |                       
           |_____ @




BBコード使いましょう。投稿時に説明へのリンクがあります
_________________
1

スキルアップ/キャリアアップ(JOB@IT)