在这个问题中,我询问了如何执行条件增量。提供的答案有效,但在庞大的数据集上不能很好地扩展。
输入:
<Users>
<User>
<id>1</id>
<username>jack</username>
</User>
<User>
<id>2</id>
<username>bob</username>
</User>
<User>
<id>3</id>
<username>bob</username>
</User>
<User>
<id>4</id>
<username>jack</username>
</User>
</Users>
期望的输出(在最佳时间复杂度下):
<Users>
<User>
<id>1</id>
<username>jack01</username>
</User>
<User>
<id>2</id>
<username>bob01</username>
</User>
<User>
<id>3</id>
<username>bob02</username>
</User>
<User>
<id>4</id>
<username>jack02</username>
</User>
</Users>
为此,最好
- 按用户名排序输入
- 对于每个用户
- 当以前的用户名等于当前用户名时
- 递增计数器和
- 将用户名设置为 '$username$counter'
- 除此以外
- 将计数器设置为 1
- 当以前的用户名等于当前用户名时
- (再次按 id 排序 -无要求)
有什么想法吗?