我似乎只能在列表中找到关于最后/第一个元素的答案,或者您可以获得特定项目等。
假设我有100个元素的列表,我想返回最后40个元素。我怎么做?我试过这样做,但它给了我一个元素..
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.small_notification);
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getBitmapFromURL("YOURURL"));
if (version >= 23) {
mBuilder.setColor(ContextCompat.getColor(this, R.color.black));
} else {
mBuilder.setColor(this.getResources().getColor(R.color.black));
}
答案 0 :(得分:2)
请使用方法子列表
List<Post> myLastPosts = posts.subList(posts.size()-40, posts.size());
答案 1 :(得分:2)
您的代码只会提供一个元素。 您需要使用subList方法,如:
posts.subList(posts.size()-40, posts.size())
答案 2 :(得分:1)
(要完成Ankit Malpani的回答)
如果40
是由我们可爱的用户提供的,则您必须将其限制为列表大小:
posts.subList(posts.size()-Math.min(posts.size(),40), posts.size())
另一种显示方式:
@Test
public void should_extract_last_n_entries() {
List<String> myList = Arrays.asList("0","1","2","3","4");
int myListSize = myList.size();
log.info(myList.subList(myListSize,myListSize).toString()); // output : []
log.info(myList.subList(myListSize-2,myListSize).toString()); // output : [3, 4]
log.info(myList.subList(myListSize-5,myListSize).toString()); // output : [0, 1, 2, 3, 4]
int lastNEntries = 50; // now use user provided int
log.info(myList.subList(myListSize-Math.min(myListSize,lastNEntries),myListSize).toString());
// output : [0, 1, 2, 3, 4]
// log.info(myList.subList(myListSize-lastNEntries,myListSize).toString());
// ouch IndexOutOfBoundsException: fromIndex = -45
}