手机网站建设的整体流程图,双减之下托管班合法吗,义乌seo优化公司,seo点击排名软件营销工具在平常开发过程中#xff0c;我们经常会遇到截取列表片段的需求#xff0c;比如取列表中前4个元素、取后四个元素。Java的List提供了subList方法#xff0c;可以用来完成这些工作#xff0c;但是使用起来并没有那么便利#xff0c;比如取前四个元素#xff1a;
list.sub…在平常开发过程中我们经常会遇到截取列表片段的需求比如取列表中前4个元素、取后四个元素。Java的List提供了subList方法可以用来完成这些工作但是使用起来并没有那么便利比如取前四个元素
list.subList(0, 4)这里代码的本意是“取出列表中下标为0到4不包括4的元素”结果恰好与需求相同但是表达并非最直观。再来看取最后4个元素的版本
int size list.size();
list.subList(size - 4 ,size)呃…更不直观了。我每次写这段程序都得小心翼翼检查index是否正确。
于是就有了本文要介绍的两个工具方法first和last。
API介绍 first 方法签名static T ListT first(ListT list, int n) 功能获取列表list中前n个元素如果列表长度小于n抛出异常。 firstAtMost 方法签名static T ListT firstAtMost(ListT list, int n) 功能获取列表list中最多前n个元素如果列表长度小于n返回list的一个副本。 last 方法签名static T ListT last(ListT list, int n) 功能获取列表list中最后n个元素如果列表长度小于n抛出异常。 lastAtMost 方法签名static T ListT lastAtMost(ListT list, int n) 功能获取列表list中最多前n个元素如果列表长度小于n返回list的一个副本。
使用示例
ListInteger list Arrays.asList(1, 2, 3, 4, 5, 6, 7);ListInteger first first(list, 3);//{1, 2, 3}
ListInteger atMostFirstList firstAtMost(list, 3);//{1, 2, 3}
ListInteger list1 firstAtMost(list, 10);//{1, 2, 3, 4, 5, 6, 7}
ListInteger last last(list, 3);//{5, 6, 7}
ListInteger lastAtMost lastAtMost(list, 3);//{5, 6, 7}
ListInteger last2 lastAtMost(list, 30);//{1, 2, 3, 4, 5, 6, 7}功能实现 public static int size(Nullable Collection? collection) {return collection null ? 0 : collection.size();}public static T ListT first(ListT list, int n) {if (size(list) n) {throw new IllegalArgumentException(list size less than n);} else {return new ArrayList(list.subList(0, n));}}public static T ListT firstAtMost(ListT list, int n) {int size size(list);return size 0? new ArrayList(): new ArrayList(size n ? list : list.subList(0, n));}public static T ListT last(ListT list, int n) {int size size(list);if (size n) {throw new IllegalArgumentException(list size less than n);} else {return new ArrayList(list.subList(size - n, size));}}public static T ListT lastAtMost(ListT list, int n) {int size size(list);return size 0? new ArrayList(): new ArrayList(size n ? list : list.subList(size - n, size));}