`
cakin24
  • 浏览: 1396283 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

允许重复的子接口List

    博客分类:
  • java
 
阅读更多

一 List接口概述

List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。因为List集合默认按元素的添加顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元素索引为1。

List作为Collection接口的子接口,当然可以使用Collection接口里全部方法。而且由于List是有序集合,因此List集合里包含了根据索引来操作集合元素的方法。

 

二 List集合常规用法

1 代码示例

import java.util.*;

public class ListTest
{
	public static void main(String[] args)
	{
		List books = new ArrayList();
		// 向books集合中添加三个元素
		books.add(new String("爷爷的青春岁月"));
		books.add(new String("奶奶的青春岁月"));
		books.add(new String("妈妈的青春岁月"));
		System.out.println(books);
		// 将新字符串对象插入在第二个位置
		books.add(1 , new String("爸爸的青春岁月"));
		for (int i = 0 ; i < books.size() ; i++ )
		{
			System.out.println(books.get(i));
		}
		// 删除第三个元素
		books.remove(2);
		System.out.println(books);
		// 判断指定元素在List集合中位置:输出1,表明位于第二位
		System.out.println(books.indexOf(new String("爸爸的青春岁月"))); //①
		//将第二个元素替换成新的字符串对象
		books.set(1, new String("儿子的幻想"));
		System.out.println(books);
		//将books集合的第二个元素(包括)
		//到第三个元素(不包括)截取成子集合
		System.out.println(books.subList(1 , 2));
	}
}

 2 运行结果

[爷爷的青春岁月, 奶奶的青春岁月, 妈妈的青春岁月]

爷爷的青春岁月

爸爸的青春岁月

奶奶的青春岁月

妈妈的青春岁月

[爷爷的青春岁月, 爸爸的青春岁月, 妈妈的青春岁月]

1

[爷爷的青春岁月, 儿子的幻想, 妈妈的青春岁月]

[儿子的幻想]

3 代码分析

此代码演示了List集合的常规用法。

 

三List集合的重要方法equls应用

1 代码示例

import java.util.*;

class A
{
	public boolean equals(Object obj)
	{
		return true;
	}
}
public class ListTest2
{
	public static void main(String[] args)
	{
		List books = new ArrayList();
		books.add(new String("网络运维与管理"));
		books.add(new String("电脑黑客攻防"));
		books.add(new String("网络管理工具"));
		System.out.println(books);
		// 删除集合中A对象,将导致第一个元素被删除
		books.remove(new A());     // ①
		System.out.println(books);
		// 删除集合中A对象,再次删除集合中第一个元素
		books.remove(new A());     // ②
		System.out.println(books);
	}
}

2 运行结果

[网络运维与管理, 电脑黑客攻防, 网络管理工具]

[电脑黑客攻防, 网络管理工具]

[网络管理工具]

3 代码分析

从上面代码的运行效果来看,执行①处代码时,程序试图删除一个A对象,List将会调用该A对象的equal方法依次与集合元素进行比较,如果该equal方法以某个集合元素作为参数时返回true,List将会删除该元素,A类重写了equal方法,该方法总是返回true。所以每次从List集合中删除A对象时,总是删除List集合中的第一个元素。

 

四 Java 8新增List方法应用

1 代码示例

import java.util.*;

public class ListTest3
{
	public static void main(String[] args)
	{
		List books = new ArrayList();
		// 向books集合中添加4个元素
		books.add(new String("TCP/IP协议大全"));
		books.add(new String("Visual C++"));
		books.add(new String("SQl server范例大全"));
		books.add(new String("现代操作系统"));
		// 使用目标类型为Comparator的Lambda表达式对List集合排序
		books.sort((o1, o2)->((String)o1).length() - ((String)o2).length());
		System.out.println(books);
		// 使用目标类型为UnaryOperator的Lambda表达式来替换集合中所有元素
		// 该Lambda表达式控制使用每个字符串的长度作为新的集合元素
		books.replaceAll(ele->((String)ele).length());
		System.out.println(books); // 输出[6, 10, 10, 14]

	}
}

 

2 运行结果

[现代操作系统, TCP/IP协议大全, Visual C++, SQl server范例大全]

[6, 10, 10, 14]

3 代码分析

该代码演示了sort方法和replaceAll这两个Java 8新增方法,他们使用了Lambda表达式:其中sort方法Lambda表达式指定的排序规则是:字符长度越长,字符串越大,一次执行完之后,List集合中的字符串会由短到长的顺序排列。replaceAll方法的Lambda表达式指定了替换集合元素的规则:直接用集合元素的长度作为新的集合元素。执行完该方法后,集中的元素被替换为[6, 10, 10, 14]。

 

 

 

 

0
0
分享到:
评论

相关推荐

    子接口及其实现类PPT实用.pptx

    2. **Set接口**:`Set`接口是另一个`Collection`的子接口,它不允许重复元素。`Set`接口的实现类有`HashSet`和`TreeSet`: - `HashSet`类:基于哈希表实现,无法保证元素的特定顺序,元素顺序可能随时间变化,且...

    子接口及其实现类PPT资料.pptx

    在Java集合框架中,`Collection`有两个主要的子接口:`List`和`Set`。 1. **List接口**:`List`是有序的`Collection`,允许存在重复元素。它提供了根据元素位置进行插入、删除和访问的方法。常见的`List`实现类有:...

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

    `List`接口还有一系列与线程安全相关的子接口和实现,如`CopyOnWriteArrayList`,它在多线程环境下提供了一种高效的并发访问策略。 总的来说,`List`接口及其实现类是Java编程中不可或缺的部分,它们提供了丰富的...

    Java集合框架List接口.pdf

    作为Collection接口的子接口,List接口提供了丰富的操作方法,使得我们能够方便地对列表进行各种操作,如添加、删除、查找以及修改元素。这些操作都是基于元素的顺序执行的,因为List接口确保了元素的有序性。 ...

    list遍历集合源码

    List接口继承自Collection,它代表一个有序的元素序列,允许重复元素,并且提供了索引访问。本文将深入探讨List接口及其相关实现类的源码,帮助你理解其内部工作机制。 首先,List接口定义了一系列方法,如`add(E ...

    java的list取之方法

    `List`是一种有序集合,允许包含重复元素。`List`的主要特点是可以通过索引访问元素,同时也支持插入、删除等操作。 ### List的主要实现类 1. **ArrayList**:基于动态数组实现,线程不安全,但提供了高效的随机...

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    `List`是`Collection`接口的子接口,它规定了元素有序(插入顺序可保留)且不允许重复的存储方式。`List`接口提供了一些特有的方法,如`add(index, element)`用于在指定位置插入元素,以及`get(index)`用于获取指定...

    list.toArray方法

    List接口是Collection接口的子接口,它代表了一个有序的集合,允许有重复的元素。在处理List集合时,我们有时需要将其转换为数组,以便进行更高效的操作,例如遍历、排序或与数组相关的其他操作。这就需要用到...

    JavaSE专题-List集合.doc

    其子接口List和Set分别代表有序且可重复元素的集合和无序且不重复元素的集合。 4. **List接口** - List接口继承自Collection,增加了对有序和重复元素的支持。常见的实现类有ArrayList、LinkedList、Vector和Stack...

    java 中 set map table list 的总结.pdf

    - List是Collection的子接口,增加了有序性和元素可重复性。 6. **Set与List的区别**: - Set不允许元素重复,而List允许。 - Set强调元素的唯一性,而List强调元素的顺序。 7. **Arrays与Collections类**: -...

    Java-Java集合体系-List-Set

    List接口是单列集合的子接口,它允许存储重复的元素,并且元素具有顺序性。List接口提供了丰富的操作方法,如add()用于添加元素,get()用于获取指定位置的元素,indexOf()和lastIndexOf()用于查找元素的位置。特有的...

    java常用集合类总结

    Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以重复元素,常用的实现类有ArrayList和LinkedList。Set接口是无序的,不允许重复元素,常用的实现类有HashSet。Map接口是以键值对的形式存储...

    JAVA中List的增删改查

    在Java编程语言中,List接口是集合框架的重要组成部分,它代表了一个有序的元素序列,允许重复元素,并且保持插入顺序。对于初学者来说,理解如何在List中进行增删改查操作是掌握Java集合框架的基础。本文将详细介绍...

    重要知识Java中的Set,List,Map的区别.pdf

    选择哪种集合类型取决于具体的应用需求,例如是否需要保持元素顺序、是否允许重复以及数据的查找和操作效率。了解和熟练掌握这些接口及其实现类的特性,对于编写高效、灵活的Java代码至关重要。

    list集合树状排序-java

    List是Java中的一个接口,它继承自Collection接口,是有序的集合,允许有重复元素。常见的实现类有ArrayList和LinkedList。在本场景中,我们需要对List中的对象进行排序,这些对象通常包含表示层级关系的属性,如父...

    Java集合Collection、List、Set、Map使用详解

    Collection接口下有List和Set两个子接口,而Map接口则用于存储键值对。 ### Collection 1.2.1 常用方法 Collection接口定义了许多通用方法,如`add()`, `remove()`, `contains()`, `size()`等,这些方法在List和...

    java接口API,LIST,HASHTABLE

    `List`接口是有序的集合,允许重复元素,常见的实现有`ArrayList`和`LinkedList`。`HashTable`是古老的键值对存储结构,线程安全但效率较低,已被`HashMap`所取代,`HashMap`是非线程安全但性能更高的选择。 集合...

    list常用方法

    在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能强大的工具。 #### 1. ...

Global site tag (gtag.js) - Google Analytics