有个列表,需要通过队尾的下标,动态缩减或者扩容,直接上代码:
public static void main(String[] args) {
List<String> initList = Arrays.asList("a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10");
System.out.println("最终集合:"+dynamicShapeList(initList, 5));
System.out.println("最终集合:"+dynamicShapeList(initList, 20));
}
/**
* @Description: 动态扩缩对象列表
* @Param: [input, endIndex]
* @return: java.util.List<java.lang.String>
* @Author: tom
* @Date: 2023
*/
private static List<String> dynamicShapeList(List<String> input, int endIndex) {
List<String> output = new ArrayList<>();
//结尾小于 就执行删除
if (endIndex < input.size()) {
List<String> delList = input.subList(endIndex, input.size());
List<String> restList = input.subList(0, endIndex);
//执行删除
for (int i = 0; i < delList.size(); i++) {
System.out.println("执行删除业务:" + delList.get(i));
}
output.addAll(restList);
} else {
output.addAll(input);
//结尾大于等于 就增加
Integer maxIndex = input.size();
// 终止索引在已知数组结尾后
for (int i = input.size(); i < endIndex; i++) {
++maxIndex;
output.add("a" + maxIndex);
System.out.println("执行保存业务:" + "a" + maxIndex);
}
}
return output;
}