我已经尝试过寻找这样做的方法,他们似乎无法解决我的问题。
我有一张地图:
Map<String,Element> elements = new HashMap<>();
我想把它放到另一张地图上;给出一个简单的条件:
if (key.charAt(0) == 'W') //Does the start of the key have a "W"
我该怎么做?
答案 0 :(得分:2)
您可以使用Java 8执行以下操作:
xsi:type="tns:listProcessesReturn"
删除其密钥不以elements.keySet().removeIf(key -> !key.startsWith("W"));
开头的所有条目。
如果您想保留第一个W
,只需先创建另一个Map
:
Map
答案 1 :(得分:1)
这对我来说很好用:
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js'></script>
<script src='{% static "vendor/deckjs/core/deck.core.js" %}'></script>
<script src='{% static "vendor/deckjs/extensions/events/deck.events.js" %}'>
<div class="deck-container">
<section class="slide" id="pie">
<script>
var ctx1 = $("#NestedChart").get(0).getContext("2d");
var myChart1 = new Chart(ctx1, {
type: 'doughnut',
data: {
labels: [1,2,3,4,5],
datasets: [{
data: [10,89,4,34,33],
},
options: {
animation: {
duration:2000
},
});
})
</script>
<div style="position: relative; height: 500px; width:500px" class='col-sm-6'>
<canvas style="position:absolute; top: 0px; left: 0px" id="NestedChart" width="400" height="400"></canvas>
</div>
</section>
</div>
<script>
$(function() {
$.deck('.slide', {countNested: false});
$("#pie").bind('deck.becameCurrent', function(ev, direction) {
console.log("test chart update");
myChart1.update();
});
});
</script>
</body>
给出以下输出:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String args[])
{
Map<String,String> elements = new HashMap<>();
Map<String,String> elements2 = new HashMap<>();//the second map
elements.put("A", new String("A"));
elements.put("B", new String("B"));
elements.put("W1", new String("W1"));
elements.put("W2", new String("W2"));
for (Map.Entry<String, String> entry : elements.entrySet())
{
if(entry.getKey().charAt(0) == 'W')
elements2.put(entry.getKey(), entry.getValue());
}
for (Map.Entry<String, String> entry : elements2.entrySet())
{
//printing the elements of the second map
System.out.println(entry.getKey() + "/" + entry.getValue());
}
}
}
答案 2 :(得分:0)
这取决于您的用例。我假设您正在使用java 8。
如果您想要一个包含已过滤条目的新地图,您可以
Map<String,Element> newElements = elements.entrySet().stream()
.filter(entry -> entry.getKey().startsWith("W"))
.collect(Collectors.toMap(Entry::getKey(), Entry::getValue()));
如果您已经拥有其他地图,并且只想添加条目,则可以使用:
//assuming Map<String,Element> newElements = some appropriately initialized map
elements.entrySet().stream()
.filter(entry -> entry.getKey().startsWith("W"))
.forEach(entry -> newElements.put(entry.getKey(), entry.getValue());
如果您愿意,也可以将第一个选项的结果传递给第二张地图上的putAll。虽然在这种情况下我会偏向第二种选择。