list.subList】的更多相关文章

在java中,我们有时候需要对一个list进行拆分处理,这个时候就需要用到list的切割方法subList. 我们知道list里面的序号起始是从0开始的,所以一个含有23条数据的list,它的序号是从0-22. 如果我们想截取出这个list中的前十条的话,那么subList的起始位置和结束位置应该是subList(1, 10): 而不是根据list的序号0-9来窃取. 所以subList的起始位置是从1开始,对应list里面的序号0.…
今天,维护以前的代码,看到了List.subList这个方法,以前没接触过,对这个就是个小白,今天学习下: java.util.List中有一个subList方法,用来返回一个list的一部分的视图. 它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的. 所以,你对原来的list和返回的list做的"非结构性修改"(non-structural changes),都会影响到彼此对方. 所…
1. subList(startIndex, endIndex);//startIndex开始,到endIndex结束,不包含endIndex! 2. 集合排序可以实现 java.util.Comparator 接口,根据不同的返回值决定是倒叙还是正序排列.…
我们经常使用subString方法来对String对象进行分割处理,同时我们也可以使用subList.subMap.subSet来对List.Map.Set进行分割处理,但是这个分割存在某些瑕疵. 一.subList返回仅仅只是一个视图 首先我们先看如下实例: public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add…
JDK中,List接口有一个实例方法List<E> subList(int fromIndex, int toIndex), 其作用是返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List). 但值得注意的是,返回的这个子列表的幕后其实还是原列表: 也就是说,修改这个子列表,将导致原列表也发生改变:反之亦然. 下面是一段实例代码: import java.util.ArrayList; import java.util.List; public …
subList subList返回仅仅只是一个视图.直接上源码 public List<E> subList(int fromIndex, int toIndex) { subListRangeCheck(fromIndex, toIndex, size); return new SubList(this, 0, fromIndex, toIndex); } subListRangeCheck方式是判断fromIndex.toIndex是否合法,如果合法就直接返回一个subList对象,注意在…
只要保证toIndex不大于size并且fromIndex不大于toIndex即可(谁会传一个负数的下标呢?) public List<E> subList(int fromIndex, int toIndex) { subListRangeCheck(fromIndex, toIndex, size); return new SubList(this, 0, fromIndex, toIndex); } static void subListRangeCheck(int fromIndex,…
很多时候我们截取字符串用的是substring方法,很自然用着,但是对于列表的截取时很多时候就用得很少,但是其实他们是很不一样的,具体哪里不一样呢? package main; import java.util.ArrayList; import java.util.List; /** * @author XX * */ public class Test { public static void main(String[] args) { //先来一个字符串 String abcd = "ab…
void testArrayList(){ String []appname ={"联系人","相机","电话","收音机","手电筒","更多"}; String s_appname = null; List<Map<String, Object>> gv_applist = new ArrayList<Map<String,Object>&g…
List<String> mStrings=new ArrayList<>(); //初始化 for (int i = 0; i < 1020; i++) { mStrings.add(String.valueOf(i)); } List<List<String>> newStrings = new ArrayList<>(); if (mStrings.size() > 100) { if (mStrings.size() % 10…
避免subList/subString陷阱 java.util.List 接口提供了一个实例方法 List<E> subList(int fromIndex, int toIndex), 用于截取 原List 的一个以 fromIndex 为起始索引,以 toIndex 为终止索引(不包括)的子列表. subString 类似于 subList ,对 String 进行截取. subList/subString陷阱 subString在本文涉及到的方面都类似于subList,不再赘述 关于函数…
某个业务场景需要将list超过10个元素时截取前10个然后再丢memcached缓存,因此写了这么一行代码 if(list.size()>10){ list=list.subList(0, 10): } cache.put(key,list) 然而put返回了false,于是怀疑是序列化问题.做了下如下测试 System.out.println(list instanceof Serializable); System.out.println(list.subList(0, 10) instan…
List<E> subList(int fromIndex,int toIndex) 该方法返回原有集合从fromIndex 到 toIndex之间一部分数据,组成一个新的集合,这两个集合之间是有联系的. 1:你对原来的集合与返回的集合做非结构性的修改,都会影响到对方. 2:如果你对原来的集合进行结构性的修改,在使用返回的子List语义上将会是undefined, 使用的时候将会抛出        ConcurrentModificationException异常 List<String…
java中有一个返回子列表的方法: public list<E> subList(int fromIndex, int toIndex){       subListRangeCheck(fromIndex, toIndex,size);       return new SubList(this , 0, fromIndex, toIndex); } 返回一个fromIndex为起点,toIndex为终点(不包含终点)的子列表.从上实现代码中可以看到,先检查一下单签的fromIndex和to…
Exception in thread "main" java.lang.StackOverflowError at java.util.ArrayList$SubList.rangeCheckForAdd(Unknown Source) package com.test; import java.util.ArrayList; import java.util.List; public class TEST { public static void main(String[] arg…
ArrayList 中 subList 的基本用法: subList(fromIndex:int,toIndex:int):List<E> 返回从fromIndex到toindex-1 的 子列表 在使用集合中,可能常常需要取集合中的某一部分子集来进行一下操作,于是subList这个方法就映入我们的眼帘,毫不犹豫地使用. 例如以下代码: public static void main(final String[] args) { List<Object> lists = new A…
1. ArrayList的subList 结果不可以强转成ArrayList,否则抛出ClassCastException异常,原因是subList返回的是ArrayList的内部类SubList,并不是ArrayList,而是ArrayList的一个视图.举例 public class SublistTest { public static void main(String[] args) { ArrayList<Integer> myList = new ArrayList<Inte…
参考博文使用java.util.List.subList时最好小心点 List接口中定义: List<E> subList(int fromIndex, int toIndex); 英文注释: Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive. (If fromIndex and toIndex are equal, the…
我们经常使用subString方法来对String对象进行分割处理,同时我们也可以使用subList.subMap.subSet来对List.Map.Set进行分割处理,但是这个分割存在某些瑕疵. 一.subList返回仅仅只是一个视图 首先我们先看如下实例: public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add…
java.util.List中有一个subList方法,用来返回一个list的一部分视图. List<E> subList(int fromIndex, int toIndex); 它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的.返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表. 但值得注意的是,返回的这个子列表的幕后其实还是原列表:也就是说,修改…
计划真的赶不上变化,时间过得真快.废话不多说了,今天主要记录之前有同事遇到的一些坑分享出来. 一.封装类的应用会引起NPE异常 对于其他对象的应用,一般在使用之前会判断它是否为空,如果不为空才会使用它以及它里面的一些属性值.但是对于基本类型的封装类型,就有很多人漏掉对于它的判断. 就在前面几天有位同事问我说这段代码它怎么会报空指针呢? 先模拟下这个场景下的代码: // 第三方的实体类对象 class Count{ Integer total; String name; String leavin…
1. 在看<阿里巴巴java编程手册的时候>有如下强制约束 顺便学了一下subList. java.util.List中有一个subList方法,用来返回一个list的一部分的视图. List<E> subList(int fromIndex, int toIndex); 它返回原来list的从[fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的list支持的. 所以,你对原来的list和返回的list做的“非结构性修改…
一点一点看JDK源码(五)java.util.ArrayList 后篇之SubList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) SubList可以将一个数组根据index拆分为多个数组,使用多线程对于数组进行遍历 未使用多线程的代码比较简单,代码示例如下: package com.FM.ArrayListStudy; import java.util.ArrayList; import java.util.List; publ…
java.util.List中有一个subList方法,用来返回一个List的一部分的视图. List<E> subList(int fromIndex, int toIndex); 它返回原来list的从(fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的List支持的.返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List). 但值得注意的是,返回的这个子列表的幕后其实还是原列表:…
比如集合中的内容为1,2,3,4,5list.sublist(2,4)就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的就是说是从大于等于2到小于4那子集内容就是3,4(集合的下标都是从0开始) public static void main(String[] args) { List list = new ArrayList(); for (int i = 1; i <= 5; i++) { list.add(i); } System.out.println(list);…
GitHub 3.7k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 3.7k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 3.7k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 集合是Java开发日常开发中经常会使用到的.在之前的一些文章中,我们介绍过一些关于使用集合类应该注意的事项,如<为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作>.<为什么阿里巴巴建议集合初始化时,指定集合…
转自:https://www.toutiao.com/a6705958780460335619/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1561423940&app=news_article&utm_source=weixin&utm_medium=toutiao_android&req_id=201906250852200101520492020364F…
我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做? 这个还不简单,几行代码就可以了 public List<Integer> trimList(List<Integer> list, int add) { list.add(add); list.sort(null); if (list.size() > 20) { list = list.subList(0, 20); } return list; } 1. 测试验证 上面…
import java.util.ArrayList;import java.util.List; public class Test2 {    public static void main(String[] args){        List list = new ArrayList();        list.add("000");        list.add("111");        list.add("222");    …
上一章说了很多ArrayList相关的内容,但还有一块儿内容没说到,那就是subList方法.先看一段代码 public static void testSubList() { List<String> stringList = new ArrayList<>(); stringList.add("牛魔王"); stringList.add("蛟魔王"); stringList.add("鹏魔王"); stringList…