如何获取List<TileAnimation>中内部List<TileFrame>的最大长度
获取TileAnimation集合中TileFrames的最大长度
针对需求,提供两种实用实现方式:
方式一:传统循环遍历
逻辑直观,适配所有Java版本:
int maxSize = 0; for (TileAnimation anim : tileAnimations) { // 判空避免空指针异常 if (anim != null && anim.getTileFrames() != null) { int currentSize = anim.getTileFrames().size(); if (currentSize > maxSize) { maxSize = currentSize; } } } // maxSize即为所有tileFrames列表的最大长度
必须对TileAnimation实例和tileFrames列表做非空判断,防止运行时抛出NullPointerException。
方式二:Java 8+ Stream API
借助流式操作简化代码,更符合现代Java编程风格:
import java.util.Objects; import java.util.List; // ... int maxSize = tileAnimations.stream() .filter(Objects::nonNull) // 过滤空的TileAnimation对象 .map(TileAnimation::getTileFrames) // 提取tileFrames列表 .filter(Objects::nonNull) // 过滤空的列表 .mapToInt(List::size) // 将列表转为对应的长度值 .max() // 计算最大值 .orElse(0); // 若没有有效元素,返回默认值0
这种链式调用的方式代码紧凑,可读性强,同时自动处理了空集合的边界情况。
内容的提问来源于stack exchange,提问作者user21172734
相关产品推荐
相关产品推荐

