- 題名: ArrayList 挿入位置の取得?
- 日時: 2004/09/13 22:09:20
- ID: 6150
- この記事の返信元:
- (なし)
- この記事への返信:
- [6157] Re[1]: ArrayList 挿入位置の取得?2004/09/14 10:22:23
- [6158] Re[1]: ArrayList 挿入位置の取得?2004/09/14 10:38:28
- ツリーを表示
■No6150に返信(突然ですがさんの記事)
> <<質問>>
> myIndexとして -1234 が帰ってきた場合、
> 具体的にはどうすれば正しい挿入ポイントを取得する事が出来るのでしょうか?
> 基本的な事なのでしょうが "ビットごとの補数演算 (~)" は
> VB.netではどうすれば良いのでしょうか?
この状況で、"ビットごとの補数演算 (~)" が必要ですか?
> 指定した値が ArrayList に格納されていない場合、このメソッドは負の整数を返し
> ます。この負の整数に、ビットごとの補数演算 (~) を適用して、検索値よりも大き
> い最初の要素のインデックスを取得できます。値を ArrayList に挿入する場合、こ
> のインデックスを挿入ポイントとして使用して、並べ替え順を維持する必要がありま
> す。
リファレンスの説明、そのまんまではないかと。
判らない場合は、実際に色々なケースで試せば、おのずとわかると思いますよ。
ソース:-------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
Dim nArray() As String = {"C", "VB", "Assembler", "Delphi", "Java", "Perl"}
Dim i As Integer
Array.Sort(nArray)
Console.WriteLine("ソート後:")
For i = 0 To nArray.Length - 1
Console.WriteLine(i.ToString() & ":" & nArray(i))
Next i
Console.WriteLine("「C++」が挿入されるべき場所は、" & Array.BinarySearch(nArray, "C++") * -1 - 1)
Console.WriteLine("「VB.NET」が挿入されるべき要素は、" & Array.BinarySearch(nArray, "VB.NET") * -1 - 1)
Console.WriteLine("「SmallTalk」が挿入されるべき要素は、" & Array.BinarySearch(nArray, "SmallTalk") * -1 - 1)
End Sub
-------------------------------------------------------------------------
出力結果:-----------------------------------------------------------------
ソート後:
0:Assembler
1:C
2:Delphi
3:Java
4:Perl
5:VB
「C++」が挿入されるべき要素は、2
「VB.NET」が挿入されるべき要素は、6
「SmallTalk」が挿入されるべき要素は、5
--------------------------------------------------------------------------
# 質問内容の意味を曲解していたら申し訳ありません。m(_ _)m
分類:[.NET]
お世話に成ります
既に有るソート済のArrayListに新しく要素を追加する時の挿入ポイントに付いてヘルプでは以下のように説明があります。
Dim myIndex As Integer = myList.BinarySearch(myObject)
指定した値が ArrayList に格納されていない場合、このメソッドは負の整数を返し
ます。この負の整数に、ビットごとの補数演算 (~) を適用して、検索値よりも大き
い最初の要素のインデックスを取得できます。値を ArrayList に挿入する場合、こ
のインデックスを挿入ポイントとして使用して、並べ替え順を維持する必要がありま
す。
<<質問>>
myIndexとして -1234 が帰ってきた場合、具体的にはどうすれば正しい挿入ポイントを取得する事が出来るのでしょうか?
基本的な事なのでしょうが "ビットごとの補数演算 (~)" はVB.netではどうすれば良いのでしょうか?
宜しくお願いします。