首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何实现持续更新值的最佳Java数据结构?

如何实现持续更新值的最佳Java数据结构?
EN

Stack Overflow用户
提问于 2018-10-18 00:51:53
回答 2查看 0关注 0票数 0

希望在字符串中保持一个持续的记录...(As,Bs,Cs等的数量)我一直无法更新与键相关的值。每次我想更新值时都必须创建一个新对象,因为Integer是不可变的。其他类型(如Atomic Integer)会抛出异常或要求使用-Xlint重新编译。有没有什么比HashMap更好的重复更新键/值对?不断创建新对象似乎是不好的做法,我不想用-Xlint重新编译。我在python中没有这个问题,因为python允许使用与Java的Integer不同的字典的整数。

代码语言:javascript
复制
HashMap map = new HashMap<Character,Integer>(); 

^我不想每次想要增加我的值时创建一个新的Integer对象,或者至少我想要“安全地”和我的常规编译器这样做。不是-Xlint。

EN

回答 2

Stack Overflow用户

发布于 2018-10-18 09:08:28

可以拥有这个简单的数据结构(一个int数组)(因为你只想要从'A'到'Z'的字符)

代码语言:javascript
复制
// each index corresponds to a character
// 'A' corresponds to index 0 (ASCII value 65)
// 'B' corresponds to index 1 (ASCII value 66) and so on till 'Z'
int[] countArray = new int[26];

假设得到字母“F”(ASCII值70),可以更新“F”的计数,如下所示:

代码语言:javascript
复制
// (int)('F'-'A') will give you 5
countArray[(int)('F'-'A')] += 1;
票数 0
EN

Stack Overflow用户

发布于 2018-10-18 09:51:57

如果你严格处理String中的字符,你可以使用长度为256的int数组,即int[] map = new int[256];如果你处理unicode字符你必须使用长度65536,因为java的char类型是无符号的16位整数。要获得/修改/更新,可以执行类似map['K'] = 6;或更新的操作int countK = map['K'];

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档