java判断字符串(含中文)的内容相似度

简介: java判断字符串(含中文)的内容相似度
/**
     * 判断地址相似
     * 此处简单的判断字符串的内容80%相似即可
     * @param str1
     * @param str2
     * @return
     */
    public static boolean isNearby(String str1, String str2) {
   
        Map<Character, int[]> vectorMap = new HashMap<>();
        char[] chArray1 = str1.toCharArray();
        for (char c : chArray1) {
   
            if (vectorMap.containsKey(c)) {
   
                vectorMap.get(c)[0]++;
            } else {
   
                int[] arr = new int[2];
                arr[0] = 1;
                vectorMap.put(c, arr);
            }
        }
        char[] chArray2 = str2.toCharArray();
        for (char c : chArray2) {
   
            if (vectorMap.containsKey(c)) {
   
                vectorMap.get(c)[1]++;
            } else {
   
                int[] arr = new int[2];
                arr[1] = 1;
                vectorMap.put(c, arr);
            }
        }
        double vector1Modulo = 0;
        double vector2Modulo = 0;
        double vectorProduct = 0;
        for (Map.Entry<Character, int[]> entry : vectorMap.entrySet()) {
   
            int[] arr = entry.getValue();
            vector1Modulo += arr[0] * arr[0];
            vector2Modulo += arr[1] * arr[1];
            vectorProduct += arr[0] * arr[1];
        }
        vector1Modulo = Math.sqrt(vector1Modulo);
        vector2Modulo = Math.sqrt(vector2Modulo);
        if (vector1Modulo == 0 || vector2Modulo == 0) {
   
            return false;
        } else {
   
            double v = vectorProduct / (vector1Modulo * vector2Modulo);
            return  v >= 0.8;
        }
    }
相关文章
|
5天前
|
Java API 索引
Java中的字符串与字符操作详解
Java中的字符串与字符操作详解
|
10天前
|
人工智能 Java 编译器
大头儿子和小头爸爸的战斗--java字符和字符串
大头儿子和小头爸爸的战斗--java字符和字符串
|
12天前
|
Java 程序员
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
27 3
|
13天前
|
Java
java字符串分割split你用对了吗
java字符串分割split你用对了吗
15 1
|
3天前
|
Java API 索引
Java中的字符串与字符操作详解
Java中的字符串与字符操作详解
|
4天前
|
JSON Java 数据格式
前后端数据交换,JSON基础语法和JSON数据和Java对象转换,最快的对象转换,JSON{““}字符串如何写User{id=1,username=‘zhangsan‘,password=‘123‘}
前后端数据交换,JSON基础语法和JSON数据和Java对象转换,最快的对象转换,JSON{““}字符串如何写User{id=1,username=‘zhangsan‘,password=‘123‘}
|
11天前
|
算法 Java
Java将16进制的字符串转换为10进制数的方法
【6月更文挑战第27天】Java将16进制的字符串转换为10进制数的方法
14 0
|
12天前
|
存储 算法 Java
Java数据结构与算法:用于高效地存储和检索字符串数据集
Java数据结构与算法:用于高效地存储和检索字符串数据集
|
13天前
|
Java 机器人 程序员
Java中的字符串操作技巧与最佳实践
Java中的字符串操作技巧与最佳实践
|
13天前
|
Java
java实现字符串与十六进制字符串互转
java实现字符串与十六进制字符串互转
15 0