加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将字符串映射到整数

发布时间:2020-12-14 05:31:15 所属栏目:Java 来源:网络整理
导读:Java中最简单的方法是将字符串(Java String)映射到(正)整数(Java int),这样就可以了 等于字符串映射到相等的整数,和 不同的字符串映射到不同的整数? 所以,类似于hashCode(),但是需要不同的字符串来产生不同的整数.所以,在某种意义上,它将是一个没有碰撞可能
Java中最简单的方法是将字符串(Java String)映射到(正)整数(Java int),这样就可以了

>等于字符串映射到相等的整数,和
>不同的字符串映射到不同的整数?

所以,类似于hashCode(),但是需要不同的字符串来产生不同的整数.所以,在某种意义上,它将是一个没有碰撞可能性的hasCode().

一个明显的解决方案将保持从字符串到整数的映射表,
和一个计数器,以保证新的字符串被分配一个新的整数.我是在想
这个问题通常如何解决.
将其扩展到其他对象而不是字符串也是有趣的.

解决方法

这是不可能实现没有任何限制,只是因为有更多可能的字符串,而不是整数,所以最终你会用尽数字.

只有在限制可用字符串数量的情况下才可以使用解决方案.那么你可以使用一个简单的计数器.这是一个简单的实现,可以使用所有(2 ^ 32 = 4294967296不同的字符串).没关系,它使用了很多记忆.

import java.util.HashMap;
import java.util.Map;

public class StringToInt {

    private Map<String,Integer> map;

    private int counter = Integer.MIN_VALUE;

    public StringToInt() {
        map = new HashMap<String,Integer>();
    }

    public int toInt(String s) {
        Integer i = map.get(s);
        if (i == null) {
            map.put(s,counter);
            i = counter;
            ++counter;
        }
        return i;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读