关于java的sublist的信息
今天给各位分享java的sublist的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、List集合中subList()方法带的2个参数是什么意思
- 2、java sublist 是复制 还是引用
- 3、LinList 不是抽象的,并且未覆盖 java.util.List 中的抽象方法 subList(int,int),求助JAVA解决方法
- 4、List集合中subList方法带的2个参数是什么意思
- 5、java list sublist 会不会下标越界
- 6、java怎么把一个表中的框分成两半
List集合中subList()方法带的2个参数是什么意思
比如集合中的内容为1,2,3,,4,5
list.sublist(2,4)
就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的
就是说是从大于等于2到小于4
那子集内容就是3,4(集合的下标都是从0开始)
java sublist 是复制 还是引用
所以,你对原来的list和返回的list做的“非结构性修改”(non-structural changes),都会影响到彼此对方。
所谓的“非结构性修改”,是指不涉及到list的大小改变的修改。相反,结构性修改,指改变了list大小的修改。
那么,如果涉及到结构性修改会怎么样呢?
如果发生结构性修改的是返回的子list,那么原来的list的大小也会发生变化;
而如果发生结构性修改的是原来的list(不包括由于返回的子list导致的改变),那么返回的子list语义上将会是undefined。在AbstractList(ArrayList的父类)中,undefined的具体表现形式是抛出一个ConcurrentModificationException。
因此,如果你在调用了sublist返回了子list之后,如果修改了原list的大小,那么之前产生的子list将会失效,变得不可使用。
LinList 不是抽象的,并且未覆盖 java.util.List 中的抽象方法 subList(int,int),求助JAVA解决方法
LinList是实现List接口的,所以必须实现接口中所有的方法。而subList(int,int)这个方法你没有在LinList中实现。
List集合中subList方法带的2个参数是什么意思
这个方法 java.util.List.subList(int, int) 作用
返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
我们先来看下 API
两个参数表示
fromIndex - subList 的低端(包括)
toIndex - subList 的高端(不包括)
使用示例:
下面 的list 中有四个元素, 我现在要取其中的 第二个元素 和第三个元素
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("fei");
list.add("long");
list.add("feiong");
list.add("飞天奔月");
System.out.println(list.subList(1, 3));
}
输出:
[long, feiong]
java list sublist 会不会下标越界
上图是从JDK源码中截取粗来的,很明显,他会进行下标检查,所以sublist方法是会下标越界的
java怎么把一个表中的框分成两半
Java中将List分成两个子列表的最简单,最标准和/或最有效的方法是什么?可以改变原始列表,因此不需要复制。方法签名可以是
/** Split a list into two sublists. The original list will be modified to
* have size i and will contain exactly the same elements at indices 0
* through i-1 as it had originally; the returned list will have size
* len-i (where len is the size of the original list before the call)
* and will have the same elements at indices 0 through len-(i+1) as
* the original list had at indices i through len-1.
*/
List split(List list, int i);
[EDIT] List.subList返回原始列表上的视图,如果原始视图被修改,则视图无效。所以split不能使用子列表,除非它也免除了原始引用(或者,如在Marc Novakowski的答案,使用subList,但立即复制结果)。
java的sublist的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java的sublist的信息别忘了在本站进行查找喔。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。