首页 > 解决方案 > Java 8 - 如何在列表中找到最接近的名称

问题描述

我正在使用java 8,我正在尝试实现一种算法来尝试在列表中找到正确的名称,或者最接近的名称。

例如 :

**Name**  
Smith Johnson Williams Brown

**Lists of names**
Johnson 
Johnson Williams Brown
Smith Johnson Brown Williams
Smith Johnson
Smith Williams Brown Johnson

在这种情况下,由于字符串的顺序,算法必须返回“Smith Johnson Brown Williams”。

当然,如果我们将“Smith Johnson Williams Brown”添加到名称列表中,它只会返回这个名称,但如果它不存在,我们必须返回与订单最接近的名称。

有人可以帮忙吗?

谢谢你。

标签: javalistarraylistjava-8

解决方案


Levenshtein 算法允许您比较两个字符串之间的相似性,返回一个整数。Levenshtein 计算将一个字符串转换为另一个字符串所需的编辑次数(插入、删除或替换)。

另一个有用的算法是Jaro-Winkler 算法

更多细节:Jaro-Winkler 和 Levenshtein 距离之间的区别?

您还可以在互联网上用 java 找到这些算法的一些实现。


推荐阅读