`

java.util.List接口的方法subList()的使用注意事项

阅读更多
    JDK中,List接口有一个实例方法List<E> subList(int fromIndex, int toIndex),其作用是返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List)。
    但值得注意的是,返回的这个子列表的幕后其实还是原列表;也就是说,修改这个子列表,将导致原列表也发生改变;反之亦然。

下面是一段实例代码:
import java.util.ArrayList;
import java.util.List;

public class TestSubList {

	public static void main(String[] args) {
		List<Integer> test = new ArrayList<Integer>();
		//init list
		for (int i = 0; i < 5; i++) {
			test.add(i);	//auto boxing
		}
		//display the list
		System.out.print("the orginal list: ");
		for (int i = 0; i < test.size(); i++) {
			System.out.print(test.get(i) + " ");
		}
		System.out.println();
		
		//sub list
		List<Integer> sub = test.subList(1, 3);		//sub list contains elements: 1, 2
		sub.remove(1);		//remove element “2” from sub list
		
		//display the list again
		System.out.print("the orginal list after sublist modified: ");
		for (int i = 0; i < test.size(); i++) {
			System.out.print(test.get(i) + " ");
		}
		System.out.println();
	}

}


程序运行结果:
the orginal list: 0 1 2 3 4
the orginal list after sublist modified: 0 1 3 4

在这段代码中,我们并没有改变原始列表“test”其中的元素。然而,当删除由subList方法得到的子列表中的元素时,原始列表中的该元素也被删除了。
分享到:
评论
1 楼 xisuchi 2013-04-01  
List<Integer> sub = new ArrayList<Integer>(test.subList(1, 3));//这样可以防止原列表被改变

相关推荐

    java.util.logging.Logger使用详解

    本文详细介绍了 `java.util.logging.Logger` 的基本使用方法,包括如何创建 `Logger` 实例、理解日志级别以及如何自定义 `Handler`。这些知识点对于有效地管理和记录应用程序的日志信息至关重要。通过本文的学习,...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    在Java编程语言中,处理日期和时间时经常使用到`java.util.Date`和`java.sql.Date`这两个类。它们虽然名字相似,但在实际应用中有很大的区别。 - **`java.util.Date`**:这个类提供了创建和操作日期/时间的功能,它...

    java.util.Date与java.sql.Date相互转换

    - 在使用 `java.util.Date` 的 `getYear()` 和 `getMonth()` 方法时需要注意,`getYear()` 返回的值是从1900年开始计算的,需要加上1900才能得到实际年份;`getMonth()` 返回的是从0开始计算的月份,需要加上1。 - ...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    java并发工具包 java.util.concurrent中文版用户指南pdf

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    java.util.List接口的类及用法

    Java中的`java.util.List`接口是集合框架的重要组成部分,它扩展了`Collection`接口,并引入了一些特定于列表的特性,如有序性、可重复性以及对元素的索引访问。这篇博客将深入探讨`List`接口及其常用实现类,如`...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    "java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

    java.util包

    1. 集合框架:Java.util包是Java集合框架的基础,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。这些集合类为存储和操作对象提供了灵活的方式。例如,ArrayList实现了...

    Java中的`java.util.stream.Collectors.toMap()`方法有什么作用

    在Java中,java.util.stream.Collectors.toMap()方法是一个非常实用的工具,它允许我们将流(Stream)中的元素收集到一个Map中。这个方法是Collectors类中的一个静态方法,它实现了Collector接口,用于在流的终止...

    java.util.pdf

    标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和示例展示java.util包中的类与接口。java.util是Java的标准库中的一个包,主要用于...

    java.util包总结

    Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...

    java.sql.与java.util

    例如,对于格式为"yyyy-mm-dd"的字符串,可以使用`SimpleDateFormat`的`parse()`方法将其转换为`java.util.Date`,然后再转换为`java.sql.Date`。如果需要插入数据库,还可以利用数据库特定的函数,如Oracle的`TO_...

    java.sql.date与java.util.date.pdf

    在实际应用中,我们需要注意Java.util.Date和Java.sql.Date的区别,以便正确地使用它们。在插入数据库时,我们需要将Java.util.Date转换为Java.sql.Date,以便正确地存储日期和时间。同时,我们也需要注意日期和时间...

    java API 在包java.util中有一个GregorianCalendar类,使用它可以得到一年内某个月的日历.zip

    Java API中的`java.util.GregorianCalendar`类是用于处理日期和时间的重要工具,它提供了丰富的功能来满足各种日历操作需求。这个类是基于格里高利历(公历)的,是Java中最常用的日期时间类之一。在给定的压缩包...

    深入理解Java中的`java.util.stream.Collector`接口

    在Java 8引入的Stream API中,java.util.stream.Collector接口扮演着至关重要的角色。它不仅丰富了集合处理的方式,还提供了一种声明式的数据转换和汇总方法。本文将详细探讨Collector接口的工作原理、核心方法、...

Global site tag (gtag.js) - Google Analytics