如何将数组中的元素移动到最后一个元素?

时间:2018-03-08 21:51:37

标签: arrays vb.net

我需要知道如何将数组中的元素移动到最后位置。

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,但我不能,因为我不应该上学。

2 个答案:

答案 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)

我正在使用结构数组,如您所见。