roc*_*kit 1 java data-structures
在Java中是否存在像"Set"这样的对象,它只能包含唯一的字符串值,还包含字符串值出现次数的计数?
这个想法很简单
有了数据集ala ...
A B B C C C.
我想将每行文本添加到类似Set的对象中.每次将非唯一文本添加到集合中时,我还希望具有与集合关联的数值,以显示添加的次数.因此,如果我在上面的数据集上运行它,输出将是这样的:
答:1 B:2 C:3
有任何想法吗?
Jim*_*ans 16
你需要一个"Bag",比如Apache Commons Collections中的Bag或Google Collections中的Multiset.您可以多次向其添加相同的值,它将记录每个值的计数.然后,您可以查询计数.
你会做这样的事与Apache的百科全书袋:
Bag myBag = new HashBag();
myBag.add("Orange");
myBag.add("Apple", 4);
myBag.add("Apple");
myBag.remove("Apple", 2);
int apples = myBag.getCount("Apple"); // Should be 3.
int kumquats = myBag.getCount("Kumquat"); // Should be 0.
Run Code Online (Sandbox Code Playgroud)
这与Google Collections的Multiset有关.
Multiset<String> myMultiset= HashMultiset.create();
myMultiset.add("Orange");
myMultiset.add("Apple", 4);
myMultiset.add("Apple");
myMultiset.remove("Apple", 2);
int apples = myMultiset.count("Apple"); // 3
int kumquats = myMultiset.count("Kumquats"); // 0
Run Code Online (Sandbox Code Playgroud)
Apache Collections的问题一般是它没有得到非常积极的维护,它还不支持Java Generics.为了进入这个差距,谷歌编写了他们自己的收藏品,这些收藏品非常强大.请务必先评估Google Collections.
更新:Google Collections还提供Multimap,一个"类似于地图的集合,但可以将多个值与一个键相关联".
Esk*_*sko 10
Map<String, Integer>这将是最好的选择,用词来表达你想要做的是映射一个字符串的出现次数.基本上有类似这样的东西:
public void add(String s) {
if (map.containsKey(s)) {
map.put(s, map.get(s) + 1);
} else {
map.put(s, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |