我有一个包含一些数据的字符串集合。例如:
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
最佳答案
- 首先,让我们简化您的代码。我建议制作一个
User
目的 或某种形式并使其具有name
,date
和message
属性,那么您的列表将变为List<User>
. - 至于对
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/