用 C# 回答也对我有帮助。
我尝试了这段代码,因为如果我在多个数组列表中有重复的字符串,它会像以前一样按顺序更新和显示。
maths
english
maths
hindi
english
science
Economics
scince
我需要这样的输出
maths_1
english_1
maths_2
hindi
science_1
Economics
scince_2
我试过这段代码,但输出不按顺序**
Dim subjectCounts As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)
For Each subject As String In arraysub
If subjectCounts.ContainsKey(subject) Then
subjectCounts(subject) = (subjectCounts(subject) + 1)
Else
subjectCounts.Add(subject, 1)
End If
Next
Dim output As List(Of String) = New List(Of String)
For Each pair As KeyValuePair(Of String, Integer) In subjectCounts
If (pair.Value > 1) Then
Dim i As Integer = 1
Do While (i <= pair.Value)
output.Add((i.ToString + ("_" + pair.Key)))
i = (i + 1)
Loop
Else
output.Add(pair.Key)
End If
Next
最佳答案
我想这会生成你想要的输出
首先让我们检查主题是否需要以“_#”结尾
现在我们遍历主题,并添加 _# 结尾 每个发生不止一次的人。 订单将与输入相同,因为我们运行了它。 计数将即时生成,因此这将是正确的。
Dim hasMultiple As New Dictionary(Of String, Boolean)
For Each subject As String In arraysub
If hasMultiple.ContainsKey(subject) Then
hasMultiple(subject) = True
Else
hasMultiple.Add(subject, False)
End If
Next
Dim output As New List(Of String)
Dim subCount As New Dictionary(Of String, Integer)
For Each subject As String In arraysub
If Not subCount.ContainsKey(subject) Then
subCount.Add(subject, 0)
End If
subCount(subject) += 1
If hasMultiple(subject) Then
output.Add(subject & "_" & subCount(subject))
Else
output.Add(subject)
End If
Next
关于c# - 多个arraylist重复subjectname顺序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051571/