我有要求我有地图列表
[{Men=1},{Men=2, Women=3},{Women=2,Boys=4}]
Run Code Online (Sandbox Code Playgroud)
现在我需要使它成为一个flatMap,看起来像
Gender=countOfValues
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,输出将是
{Men=3,Women=5,Boys=4}
Run Code Online (Sandbox Code Playgroud)
目前我有以下代码:
private Map<String, Long> getGenderMap(
List<Map<String, Long>> genderToCountList) {
Map<String, Long> gendersMap = new HashMap<String, Long>();
Iterator<Map<String, Long>> genderToCountListIterator = genderToCountList
.iterator();
while (genderToCountListIterator.hasNext()) {
Map<String, Long> genderToCount = genderToCountListIterator.next();
Iterator<String> genderToCountIterator = genderToCount.keySet()
.iterator();
while (genderToCountIterator.hasNext()) {
String gender = genderToCountIterator.next();
if (gendersMap.containsKey(gender)) {
Long count = gendersMap.get(gender);
gendersMap.put(gender, count + genderToCount.get(gender));
} else {
gendersMap.put(gender, genderToCount.get(gender));
}
}
}
return gendersMap;
}
Run Code Online (Sandbox Code Playgroud)
我们如何使用lambda表达式使用Java8编写这段代码?
我是AVRO的新手,请问这是一个简单的问题。我有一个用例,其中我使用AVRO模式进行记录调用。
假设我有Avro模式
{
"name": "abc",
"namepsace": "xyz",
"type": "record",
"fields": [
{"name": "CustId", "type":"string"},
{"name": "SessionId", "type":"string"},
]
}
Run Code Online (Sandbox Code Playgroud)
现在,如果输入像
{
"CustId" : "abc1234"
"sessionID" : "000-0000-00000"
}
Run Code Online (Sandbox Code Playgroud)
我想对这些字段使用一些正则表达式验证,并且仅当输入格式如上所示时才接受此输入。有什么方法可以在avro模式中指定包含正则表达式的表达式吗?
还有其他支持这样的数据序列化格式吗?
我正在尝试根据值对地图进行排序.
但我看到以下程序有一些奇怪的行为
public class CompareByValueMain {
public static void main(String[] args) {
Map<String,Integer> itemIDToTimeMap = new HashMap<String,Integer>();
itemIDToTimeMap.put("Baggage", 3);
itemIDToTimeMap.put("Handbag", 16);
itemIDToTimeMap.put("Closed Footwear", 4);
itemIDToTimeMap.put("Shirt", 25);
Set<String> itemIDs = itemIDToTimeMap.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
System.out.println(itemIDs);
}
}
Run Code Online (Sandbox Code Playgroud)
输出结果是正确的
[衬衫,手提包,封闭式鞋类,行李 ]
但是当我从Baggage改为Bag时的输入 它给出了以下输出
[衬衫,包,手提包,封闭式鞋]
理想情况下,应根据地图中的值进行排序,而不管键值如何.但是如果在这里更改密钥,不确定为什么会改变.