如果没有任何限制,这是不可能实现的,因为可能的字符串比整数多,所以最终你会用完数字。
只有当您限制可用字符串的数量时,才有可能找到解决方案。然后你可以使用一个简单的计数器。这是一个简单的实现,其中可以使用所有(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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14683 次 |
| 最近记录: |