我正在分页一些数据,我有一个long
列表,其中包含数据集中每个元素的ID。现在,我有这样的事情:
List<long> TheListOfIDs = {23,435,6635,4224,546,756,23,542....};
TheListOfIDs
实际上包含数千个ID。每页数据包含20个元素。我正在编写一个接收long
的函数,并返回ID所在的页码。例如,在示例数据中,ID号435
位于第二位,因此它是前20个元素的一部分,因此它位于第1页。
如果我写
int ThePageNumber = TheListOfIDs.IndexOf(TheID) / 20;
这会在所有情况下都有效吗?
更新编辑:列表中的每个元素都是唯一的,并且函数中传递的ID肯定在列表中!
答案 0 :(得分:0)
我建议编写不同案例的单元测试。我想到的是:
如果您的代码通过了这些测试,我认为您没问题。
答案 1 :(得分:0)
您应该检查id列表中不存在id的情况。 这是Java代码:
public int getPage(List<Long> ids, Long id)
{
int index = ids.indexOf(id);
if (index == -1)
return -1; // the id does not exist in the list
return (index / 20) + 1; // the page number should start from index 1
}
答案 2 :(得分:0)
var pagebatches = TheListOfIDs.Batch(20);
pagebatches的元素最多包含20个项目。每个项目对应一个页码。
pagebatches的最后一个元素可能包含剩余的项目(&lt; = 20)。
答案 3 :(得分:0)
你说位置2在第1页,但是2/20 = 0,所以不,它不起作用。
但你可以做到
int ThePageNumber = (TheListOfIDs.IndexOf(TheID) + NumIDsInEachPage - 1) / NumIDsInEachPage ;