B4X:
Sub AppStart (Args() As String)
Dim firstlist As List = Array(0, 1, 2, 3, 4, 5, 9, 17, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 36, 36, 37, 38, 38, 38, 39, 39, 39, 40, 41, 41, 41, 42, 43, 45, 46, 50, 50, 50, 50)
Dim Now As Long = DateTime.Now
Log(RemoveDuplicates(firstlist))
Log(Abs(DateTime.Now - Now))
Dim Now As Long = DateTime.Now
Log(RemoveDuplicates2(firstlist))
Log(Abs(DateTime.Now - Now))
End Sub
Sub RemoveDuplicates(NyList As List) As List
If NyList = Null Or Not(NyList.IsInitialized) Then Return NyList
Dim lstNew As List
lstNew.Initialize
For Each objItem As Object In NyList
If lstNew.IndexOf(objItem) = - 1 Then
lstNew.Add(objItem)
End If
Next
Return lstNew
End Sub
Sub RemoveDuplicates2(MyList As List) As List
If MyList = Null Or Not(MyList.IsInitialized) Then Return MyList
If MyList.Size <= 1 Then Return MyList
Dim lstNew As List
lstNew.Initialize
MyList.Sort(True)
Dim PrevItem As Object = MyList.Get(0)
lstNew.Add(PrevItem)
For Each objItem As Object In MyList
If PrevItem <> objItem Then
lstNew.Add(objItem)
End If
PrevItem = objItem
Next
Return lstNew
End Sub
[CODE lang="b4x" title="Debug result"]Waiting for debugger to connect...
Program started.
(ArrayList) [0, 1, 2, 3, 4, 5, 9, 17, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 50]
3
(ArrayList) [0, 1, 2, 3, 4, 5, 9, 17, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 50]
1
Program terminated (StartMessageLoop was not called).
[/CODE]
[CODE lang="b4x" title="Release result"](ArrayList) [0, 1, 2, 3, 4, 5, 9, 17, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 50]
10
(ArrayList) [0, 1, 2, 3, 4, 5, 9, 17, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 50]
1
[/CODE]