首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串数量( java )

字符串数量( java )
EN

Stack Overflow用户
提问于 2016-10-14 08:16:47
回答 4查看 102关注 0票数 0

我有一个

代码语言:javascript
运行
复制
Iterator<Text> values

每个文本都包含句点/类型对。

看上去像这样

早间短信

晨声

早间短信

早间短信

晨声

日短消息

日音

晚间短信

晚音

晚间短信

晚音

晚间短信

晚音

晚间短信

晚音

夜间短信

夜声

夜间短信

夜声

有没有一种方法可以计算在没有很多其他块的情况下一对出现多少次?

结果应该是

凌晨3点短信

凌晨2点

1天短信

1天语音

3晚短信

3晚声

2夜之声

2夜之声

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-14 08:38:40

首先,使用HashMap<Text,Integer>跟踪每个不同的句点/类型对,其中TextkeyIntegervaluevalue是频率。

代码语言:javascript
运行
复制
HashMap<Text,Integer> m = new HashMap<Text,Integer>();
//Populate the HashMap
while(values.hasNext()) 
{
  Text element = values.next();
  if(m.get(element) == null)
  {
   m.put(element , 1);
  }       
  else m.put(element , m.get(element) + 1);   
}

//Display the frequencies
for (Map.Entry<Text, Integer> entry : m.entrySet())
{
    System.out.println(entry.getValue() + "/" + entry.getKey().period  );
}

我假设Text是一个类,它的公共字段名为period,包含类似于morning sms的字符串。

票数 1
EN

Stack Overflow用户

发布于 2016-10-14 08:25:44

为此,请使用Streams.collect:

代码语言:javascript
运行
复制
    List<String> values = new ArrayList<>();

    values.add("morning");
    values.add("evening");
    values.add("morning");

    // Function.identity() means p->p, since example collection is very simple
    // If your objects are more than strings, you'll need to map them: p -> p.getName(), for example
    Map<String, Long> collect =
            values.stream().collect(groupingBy(Function.identity(), counting()));

    System.out.println(collect);
票数 2
EN

Stack Overflow用户

发布于 2016-10-14 08:35:00

你能做到的

代码语言:javascript
运行
复制
HashMap<String, Integer> maps = new HashMap<>();
      while(itr.hasNext()) {
          Object element = itr.next();
          Integer i = maps.get(element.toString());
          if(i == null) {
              maps.put(element.toString(), 1);
          }
          else {
              maps.put(element.toString(), ++i);
          }
       }

      //See result
      for(Entry<String, Integer> e : maps.entrySet()) {
          System.out.println(e.toString());  
      }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40038295

复制
相关文章

相似问题

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