我需要知道如何将数组中的元素移动到最后位置。
Dim lastElement As String = strChar(UBound(strChar)) 'J.
For i As Integer = 0 To characters.Count - 1
If characters(i).actor = searchName And characters(i).title = searchMovie Then
For j = UBound(strChar) To LBound(strChar) + strChar.Count - 1 Step -1
strChar(j) = strChar(j - 1)
Next
End If
Next
strChar(LBound(strChar)) = lastElement
所以这里我有一个结构字符和一个数组strChar。
我在互联网上查看了这段代码并且无法弄明白。它不会将元素的位置移动到最后一个或第一个,而是将元素复制到顶部。
我应该删除一个元素,但首先我必须在redim保存之前移动元素。
我希望我可以使用arraylist,但我不能,因为我不应该上学。
答案 0 :(得分:0)
这方面的一个技巧是,当你在数组中重新排列元素时,你必须在数组之外的某个地方保存一个条目,否则你将覆盖一个。
如果简单地将此元素与当前最后一个元素交换是合法的,那么:
dim temp = characters(i)
characters(i) = characters(characters.length-1)
characters(characters.length-1) = temp
如果必须保留相对顺序:
dim temp = characters(i)
for j = i to characters.length-2
characters(j)=characters(j+1)
next
characters(characters.length-1) = temp
答案 1 :(得分:0)
所以我认为最好的方法是将数组中的最后一项复制到我试图删除的项目的位置,然后重新保存数组,以便删除底部项目。基本上,我正在将一个元素的副本复制到我想要删除的位置,并摆脱那个底层元素。
Dim searchName As String = txtActorName.Text
Dim searchMovie As String = txtMovieTitle.Text
For i As Integer = 0 To characters.Count - 1
If searchName = characters(i).actor And searchMovie = characters(i).title Then
characters(i) = characters(characters.Count - 1)
End If
Next
ReDim Preserve characters(characters.Count - 2)
我正在使用结构数组,如您所见。