Java I';当我将一个列表子列表到多个新列表中时,我缺少项目。如何在不丢失数据的情况下进行子列表?
我有10个项目的清单:Java I';当我将一个列表子列表到多个新列表中时,我缺少项目。如何在不丢失数据的情况下进行子列表?,java,list,hashmap,Java,List,Hashmap,我有10个项目的清单: List<ServiceLineTypeResource> serviceLineList = serviceLineRepository.findAll(); …我想将其分为三个单独的列表,每个列表包含3项,不包括最后一项: List<ServiceLineTypeResource> serviceLineListRow1 = serviceLineList.subList(0, min(serviceLineList.size(), 3));
List<ServiceLineTypeResource> serviceLineList = serviceLineRepository.findAll();
…我想将其分为三个单独的列表,每个列表包含3项,不包括最后一项:
List<ServiceLineTypeResource> serviceLineListRow1 = serviceLineList.subList(0, min(serviceLineList.size(), 3));
List<ServiceLineTypeResource> serviceLineListRow2 = serviceLineList.subList(4, min(serviceLineList.size(), 7));
List<ServiceLineTypeResource> serviceLineListRow3 = serviceLineList.subList(8, min(serviceLineList.size(), 11));
出于某种原因,它总是跳过列表中的第8项,Virtualization
,而给出最后一项,#
。我希望每个“行”列表包含三个项目,并且我不希望#
出现在其中任何一个项目中。这是怎么回事?
返回此列表中指定的fromIndex(包含)和toIndex(独占)之间部分的视图
因此,如果您想要完成前9项需要完成的工作:
List<ServiceLineTypeResource> serviceLineListRow1 = serviceLineList.subList(0, min(serviceLineList.size(), 3));
List<ServiceLineTypeResource> serviceLineListRow2 = serviceLineList.subList(3, min(serviceLineList.size(), 6));
List<ServiceLineTypeResource> serviceLineListRow3 = serviceLineList.subList(6, min(serviceLineList.size(), 9));
List serviceLineListRow1=serviceLineList.subList(0,min(serviceLineList.size(),3));
List serviceLineListRow2=serviceLineList.subList(3,min(serviceLineList.size(),6));
List serviceLineListRow3=serviceLineList.subList(6,min(serviceLineList.size(),9));
返回此列表中指定的fromIndex(包含)和toIndex(独占)之间部分的视图
因此,如果您想要完成前9项需要完成的工作:
List<ServiceLineTypeResource> serviceLineListRow1 = serviceLineList.subList(0, min(serviceLineList.size(), 3));
List<ServiceLineTypeResource> serviceLineListRow2 = serviceLineList.subList(3, min(serviceLineList.size(), 6));
List<ServiceLineTypeResource> serviceLineListRow3 = serviceLineList.subList(6, min(serviceLineList.size(), 9));
List serviceLineListRow1=serviceLineList.subList(0,min(serviceLineList.size(),3));
List serviceLineListRow2=serviceLineList.subList(3,min(serviceLineList.size(),6));
List serviceLineListRow3=serviceLineList.subList(6,min(serviceLineList.size(),9));
只需查看您的索引即可。第一个子列表[0,3]包含索引0,1和2。第二个子列表[4,7]包含索引4,5和6。因此您忘记了索引3。请查看您的索引。第一个子列表[0,3]包含索引0,1和2。第二个子列表[4,7][包含4、5和6。所以您忘记了索引3。看起来不错,但对于我的上一个列表,我必须这样做:list serviceLineListRow3=serviceLineList.subList(6,min(serviceLineList.size()-1,9));
@santafebound为什么?如果列表大小为9,而不是6、7和8,则只返回索引6和7。出于完全相同的原因,您创建了一个新的错误。但是,您应该做的是避免创建从3到2的子列表(例如)如果你的列表大小是2,因为这没有意义。@JBNizet如果他的列表有10个项目,那么它应该仍然对他有效,那么它将是min(9,9)
。但是没有理由这样做。除非他可以有一个少于9个项目的列表,并且总是想忽略最后一个成员。使用min()真的没有意义如果列表保证有10个元素,那么到处都是。但是……你永远不知道。@santafebound然后你可以删除所有min
,只使用数字3,6,9。顺便问一下min
是什么?Math.min
还是你自己的函数?看起来不错,但对于我的上一个列表,我必须这样做:list serviceLineListRow3=serviceLineList.subList(6,min(serviceLineList.size()-1,9));
@santafebound为什么?如果列表的大小为9,而不是6、7和8,则只返回索引6和7。出于完全相同的原因,您创建了一个新错误。但是,您应该做的是避免创建从3到2的子列表(例如)如果你的列表大小是2,因为这没有意义。@JBNizet如果他的列表有10个项目,那么它应该仍然对他有效,那么它将是min(9,9)
。但是没有理由这样做。除非他可以有一个少于9个项目的列表,并且总是想忽略最后一个成员。使用min()真的没有意义如果列表保证有10个元素,那么每个地方都有。但是……你永远不知道。@santafebound然后你可以删除所有min
,只使用数字3,6,9。顺便问一下min
是什么?Math.min
还是你自己的函数?
Row 1: Backup
Row 1: COI
Row 1: Network
Row 2: SQL_Activities
Row 2: Storage
Row 2: Unix/Linux
Row 3: Windows
Row 3: #N/A
List<ServiceLineTypeResource> serviceLineListRow1 = serviceLineList.subList(0, min(serviceLineList.size(), 3));
List<ServiceLineTypeResource> serviceLineListRow2 = serviceLineList.subList(3, min(serviceLineList.size(), 6));
List<ServiceLineTypeResource> serviceLineListRow3 = serviceLineList.subList(6, min(serviceLineList.size(), 9));