Questions tagged «collections»

集合API为开发人员提供了一组类和接口,使处理对象集合更加容易。

4
迭代和复制HashMap值的有效方法
我要转换: Map<String, Map<String, List<Map<String, String>>>> inputMap 至: Map<String, Map<String, CustomObject>> customMap inputMap在配置中提供并准备就绪,但我需要customMap格式化。CustomObject将派生自List<Map<String, String>>在函数中使用几行代码。 我尝试了一种迭代输入映射并在customMap中复制键值的常规方法。使用Java 8或其他快捷方式有什么有效的方法吗? Map<String, Map<String, List<Map<String, String>>>> configuredMap = new HashMap<>(); Map<String, Map<String, CustomObj>> finalMap = new HashMap<>(); for (Map.Entry<String, Map<String, List<Map<String, String>>>> attributeEntry : configuredMap.entrySet()) { Map<String, CustomObj> innerMap = new HashMap<>(); for (Map.Entry<String, List<Map<String, String>>> valueEntry …

2
如何安全地复制收藏集?
过去,我曾说过要安全地复制集合,请执行以下操作: public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); 要么 public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); 但是,这些“复制”构造函数,类似的静态创建方法和流是否真的安全?在哪里指定规则?所谓安全,是指Java语言和针对恶意调用者强制执行的集合提供的基本语义完整性保证,并假设有合理的支持SecurityManager且没有缺陷。 我很高兴与方法投掷ConcurrentModificationException,NullPointerException,IllegalArgumentException,ClassCastException,等,或者甚至挂起。 我选择String了一个不可变类型参数的示例。对于这个问题,我对具有自己陷阱的可变类型集合的深层副本不感兴趣。 (很明显,我已经看过了OpenJDK的源代码,并有某种形式的答案为ArrayList和TreeSet。)

2
为什么EnumMap不是Java中的SortedMap?
EnumMap<K extends Enum<K>, V> Java中的Java显然是按相关枚举的定义排序的,正如您在Javadoc中也可以看到的那样: 枚举映射按其键的自然顺序(声明枚举常量的顺序)进行维护。这反映在集合视图返回的迭代器中(keySet(),entrySet(),和values())。 我需要的是SortedMap使用枚举作为键类型。我想使用诸如headMap()或的方法firstKey(),但是我想从的cpu +内存性能中受益EnumMap s的。一个TreeMap听起来像是太多的开销在这里。 问题:这只是在实现中遗漏了吗?AbstractMap是懒惰(源自)还是有充分的理由为什么EnumMap不是SortedMap?

4
使用Java流从员工列表中获取在特定加入日期之前和之后的员工
我List的Employees的不同加入日期。我想在使用流从List加入特定日期之前和之后获取员工。 我尝试下面的代码, List<Employee> employeeListAfter = employeeList.stream() .filter(e -> e.joiningDate.isAfter(specificDate)) .collect(Collectors.toList()); List<Employee> employeeListBefore = employeeList.stream() .filter(e -> e.joiningDate.isBefore(specificDate)) .collect(Collectors.toList()); class Employee{ int id; String name; LocalDate joiningDate; } 有没有办法在单个流中做到这一点?

3
如果使用Java 8 Streams列表为空,则返回默认列表?
有什么办法可以将以下操作作为一组流操作执行,而不是显式检查RecommendationProducts 是否为空,然后返回默认列表,否则返回过滤后的列表? public List<Product> getRecommendedProducts() { List<Product> recommendedProducts = this.newProducts .stream() .filter(isAvailable) .collect(Collectors.toList()); if (recommendedProducts.isEmpty()) { return DEFAULT_PRODUCTS; } return recommededProducts; }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.