Jos*_*que 0 java collections java-stream
我有Map1000 个项目,我想List从它的前 500 个项目中生成一个,Map并删除从Map.
换句话说,我想过滤、收集到 aList并从 a 中删除项目Map。
我正在尝试这样的事情:
final int i = 0;
int max = 5;
Map<String, Object> map = new HashMap<>();
map.put("ads", "123");
map.put("qwe", "123");
map.put("cvb", "123");
map.put("asd", "123");
map.put("iop", "123");
map.put("jkl", "123");
map.put("yui", "123");
List list = map.entrySet().stream().filter(y -> i++ < max).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
预期输出:
具有 2 个值的映射
包含 5 个值的列表
Stream API 旨在创建一个新集合,而不是更改现有集合,从中创建一个流。
在这种情况下最好使用迭代器功能。像这样:
final int MAX = 500;
Map<String, String> map = new HashMap<>();
map.put("Item1", "Item 1 value");
map.put("Item2", "Item 2 value");
// ...
map.put("Item1000", "Item 1000 value");
List<String> list = new ArrayList<>();
var iterator = map.entrySet().iterator();
for (int i = 0; i< MAX; i++) {
if (iterator.hasNext()) {
var item = iterator.next();
list.add(item.getValue());
iterator.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |