java - 从java中的字符串集合中对数据进行分组

标签 java string collections

我有一个包含一些数据的字符串集合。例如:

List<String> list = new ArrayList<>();
list.add("10/10/2012 [user2] some message1");
list.add("10/10/2012 [user1] some message2");
list.add("10/10/2012 [qwwww] some message3");
list.add("11/10/2012 [user3] some message4");
list.add("11/10/2012 [user3] some message5");
list.add("12/10/2012 [user2] some message6");
list.add("12/10/2012 [user3] some message7");
list.add("12/10/2012 [user2] some message8");
list.add("12/10/2012 [sdsds] some message9");
list.add("12/10/2012 [user2] some message10");

您能建议一种简单的方法来计算 Java 中每个用户名、日期或消息的出现次数吗?

例如,用户应该是

user1 = 1
user2 = 4
user3 = 3
sdsds = 1
qwwww = 1

最佳答案

  1. 首先,让我们简化您的代码。我建议制作一个 User目的 或某种形式并使其具有 name , datemessage属性,那么您的列表将变为 List<User> .
  2. 至于对 User 进行分组对象通过某些给定的属性,您可以利用 Streams API,特别是,您对 groupingBy 感兴趣方法。

您可以在网站内和此处找到许多有关如何按给定属性对元素进行分组的示例:

<小时/>

完成上述第 1 步后,这是如何按 name 进行分组的快速示例属性,并且可以轻松扩展为按另一个属性进行分组:

Map<String, Long> resultSet = userList.stream().collect(
                      Collectors.groupingBy(User::getName, Collectors.counting()));
System.out.println(resultSet);

关于java - 从java中的字符串集合中对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46390984/

相关文章:

java - 如何使用串行事件监听器接收JSON对象?

java - 煤烟的 Eclipse 类路径

c# - 如何在razor引擎中的@var后面添加字符串(ASP MVC)

string - 查找给定句子中出现的单词

java - 是否有支持迭代时并发修改的列表集合?

java - Java中的多值哈希表

java - MQ CCDT AMQ9516 FileNotFoundException

python - 运行代码时,为什么在'±'前面打印'Â'?

Java ArrayBlockingQueue 设计

Java条件运算符? : result type