java - 如何删除列表中相似的命名字符串?

标签 java arrays list

给定一个字符串列表/数组:

document
document (1)
document (2)
document (3)
mypdf (1)
mypdf
myspreadsheet (1)
myspreadsheet
myspreadsheet (2)

如何删除所有重复项但仅保留最高的副本数?

最终结果为:

document (3)
mypdf (1)
myspreadsheet (2)

最佳答案

您提出了一个广泛的问题,所以这里有一个不具体(但仍然)“完整”的答案:

  1. 迭代所有字符串以识别包含大括号的所有行。
  2. 换句话说:识别所有看起来像“X (n)”的字符串
  3. 然后,对于找到的每个“不同”X,您可以再次迭代列表;这样您就可以找到所有出现的“X”、X (1)”、..等等
  4. 这样做可以让您检测到每个 X 的最大值 n。
  5. 将“最大值”“X (n)”插入结果列表中。

也就是说:只需要这么简单的一张收据就可以解决这个问题;现在只需要您花时间将这些伪代码指令转换为真实代码。

郑重声明:如果您的文件布局确实如上所示,那么事情会变得容易一些 - 因为您的数字似乎只是在增加。我的意思是:

X (1)
X (2)
X (3)

比治疗更容易

X (1)
X (3)
X (2)

就您的情况而言,似乎可以假设最后 X(n) 包含最大的 n。这使得使用 HashMap(按照 cainiaofei 的建议)成为一个很好的解决方案。

关于java - 如何删除列表中相似的命名字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40656938/

相关文章:

java StringTokenizer 意外结果

arrays - 在 Commodore BASIC 中填充数组 A$(X,X)?

java - 存储静态对象列表的最有效方法是什么?

python - 使用字典时循环无法正确迭代

python有条件地访问列表列表

java - "New Game"安卓游戏进度删除按钮

java - URL 连接 : how to get body returned with status ! = 200?

java - 如何根据用户从下拉菜单中选择的参数对 Java 对象列表进行排序?

python - python中numpy多维数组的非相邻切片

java - 如何对对象类型列表进行排序