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;
        }
    }
相关文章
|
21天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
95 60
|
11天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
33 6
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
46 15
|
1月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
50 4
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
51 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
18 2
|
2月前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
21 2
|
2月前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
726 4
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
131 11
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。