首页 / JAVA / java-建立计数的位置层次结构
java-建立计数的位置层次结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-建立计数的位置层次结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1448字,纯文字阅读大概需要3分钟。
内容图文
![java-建立计数的位置层次结构](/upload/InfoBanner/zyjiaocheng/684/26f81431b57f45e7a04a684e0aea1a3c.jpg)
我具有以下位置层次结构:
public class Location {
public Location parentLocation;
public String name;
public int id;
}
List<Location> listOfCities; // This list strictly contains all "city" level locations like Chicago, Atlanta etc.
让我们假设一秒钟,parentLocation只能是国家,而一个国家的parentLocation为null.即.如果我有芝加哥的位置,则芝加哥位置对象的parentLocation将是USA,并且链将在那里终止,因为位置USA的parentLocation = null.我有一个城市级别位置对象的列表,我希望得到以下计数:
USA (20)
- Chicago (12)
- New York (1)
- Oregon (5)
- Atlanta (2)
Mexico (1)
- Puebla (1)
Java8中是否有一种方便的方法来获取一个jsonable对象,该对象将代表我在上面针对给定城市位置列表描述的计数层次结构?我的尝试:
// Get counts of all cities in listOfCities (ie. Chicago -> 12)
Map<String, Integer> cityCounts = listOfCities.stream()
.map(Location::name)
.collect(Collectors.toMap(city -> city, city -> 1, Integer::sum));
我不确定如何精确地获取parentLocation的“汇总”计数并将所有内容放入单个干净的响应对象中,该对象可以按照上面漂亮打印的方式进行遍历.
解决方法:
您可以生成Map< String,Map< String,Long>> ;,外部地图中包含国家/地区名称,内部地图中包含城市名称/计数.
import static java.util.stream.Collectors.*;
Map<String,Map<String,Long>> cityCountsByCountry = listOfCities
.stream()
.collect(groupingBy(city -> city.parentLocation.name,
groupingBy(city -> city.name,
counting())));
这将产生类似于此JSON的结构:
{
"USA": {
"Chicago": 12,
"New York": 1,
"Oregon": 5,
"Atlanta": 2
},
"Mexico": {
"Puebla": 1
}
}
内容总结
以上是互联网集市为您收集整理的java-建立计数的位置层次结构全部内容,希望文章能够帮你解决java-建立计数的位置层次结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。