`

JAVA基础 之 List

    博客分类:
  • java
阅读更多

概述:

    1.有序的(序号(索引)的序,不是顺序的序,相对Set对比产生的说法),可重复集合

    2.List是Collection的子接口,所以List可以使用Collection全部方法。(见本人博客相关文章)

    3.除此之外List还有自己特殊的方法,索引相关的操作(本文重点做这部分的介绍)

    4.删除的时候防止 躺着中枪   

    5.ListIterator:专门操作list的迭代器(本例未做详解,有兴趣请看api)

    6.两个基本实现类 ArrayList(非线程安全) 和 Vector(线程安全)

       1.Vector是一个古老的遗留类(性能差),不推荐使用。

       2.Vector(Stack) 栈数据结构,使用LinkedList代替

    7.Arrays.ArrayList是一个长度固定的List,只能遍历不能 操作

    8.LinkedList

       1.可以用来做双端队列和栈

       2.由于以链表形式保存,所以随机访问性能较差,但是迭代,插入、删除的性能比较好,因为可以直接改变指针所指地址(数据结构知识)

package com.cxy.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * @author cxy
 */
public class ListTest
{
	public static void main(String[] args)
	{
		List l=new ArrayList();
		l.add("幼儿园");
		l.add("小学");
		l.add("幼儿园");
		l.add("中学");
		l.add("大学");
		System.out.println(l);  //可以看出可以有重复数据
		
		System.out.println("索引为3的元素是:"+l.get(3));
		
		System.out.println("幼儿园第一次出现的索引:"+l.indexOf("幼儿园"));
		System.out.println("幼儿园第最后一次出现的索引:"+l.lastIndexOf("幼儿园"));
		
		l.set(3, "初中");  //类似修改操作 
		l.add(4,"高中");   //插入
		System.out.println(l);
		
		l.remove("幼儿园"); //会删除第一个找到的 幼儿园
		System.out.println(l);
		l.remove(new AA()); //由于AA的equals方法返回true,导致第一个元素被误认为是和AA相等的,于是躺着就中枪了
		System.out.println(l);
		l.remove(new BB()); //BB的equals方法返回false,所以List没有找到相等的元素删除。
		System.out.println(l);
		l.remove(0);  //通过序号删除
		System.out.println(l);
		
		ArrayList l1=new ArrayList();
		l1.ensureCapacity(64); //大的数据集合,使用这个方法一次分配好空间,避免频繁多次分配,提高性能
		l1.trimToSize();  //调整至使用空间大小,避免内存浪费。
		
		try
		{
			List temp = Arrays.asList("小学","中学","大学");
		    temp.remove(0);
		}catch(Exception e)
		{
			System.out.println("temp是一个固定长度的list,只能遍历不能操作");
		}
		
		LinkedList ll = new LinkedList();
		ll.add("aaa");
		ll.add("bbb");
		ll.add("ccc");
		ll.add("ddd");
		System.out.println("原始:"+ll);
		ll.addLast("zzz");  //队列--入队
		ll.removeFirst(); //队列--出队
		System.out.println("队列操作:"+ll);
		ll.addFirst("kkk"); //栈--入栈
		System.out.println("kkk入栈:"+ll);
		ll.removeFirst(); //栈--出栈
		System.out.println("kkk出栈:"+ll);
		ll.removeLast();  //体现双端队列
		System.out.println("=========================");
		ll = new LinkedList();
		ll.add("aaa");
		ll.add("bbb");
		ll.add("ccc");
		ll.add("ddd");
		System.out.println("重新初始化:"+ll);
		ll.push("kkk");  //栈--入栈
		System.out.println("kkk入栈:"+ll);
		ll.pop();  //栈--出栈
		System.out.println("kkk出栈:"+ll);
		
		ll.offer(""); //队列--入队
		ll.offerFirst("");  //返回true的addFirst
		ll.offerLast("");  //返回true的addLast
		
		ll.poll(); //获取并删除第一个
		ll.pollFirst();  //获取并删除第一个
		ll.pollLast();  //获取并删除最后一个
		
		ll.peekFirst(); //获取不删除第一个
		ll.peekLast();  //获取不删除最后一个
		
		ll.removeFirstOccurrence("aaa"); //删除第一个出现的aaa
		ll.removeLastOccurrence("aaa"); //删除最后一个出现的aaa
	}
}


class AA
{
	@Override
	public boolean equals(Object obj)
	{
		return true;
	}
}

class BB
{
	@Override
	public boolean equals(Object obj)
	{
		return false;
	}
}

 

相关文章连接:

《JAVA基础 之 Collection》

《JAVA基础 之 Set》

 

声明:

1.原创文章,转载请标明并加本文连接。

2.更详尽的API请参见  http://docs.oracle.com/javase/7/docs/api/

3.文章反映个人愚见,如有异议欢迎讨论指正 

4
3
分享到:
评论
5 楼 落地窗 2013-02-22  
<script language="javascript">
alert('test');
</script>
4 楼 snkcxy 2013-02-22  
List是有序的--通过序号(索引)进行遍历和操作,例如:get、add、set、remove等
Set是无序的--没有序号相关的操作
不知道 我这个答案1楼满意不满意?
3 楼 snkcxy 2013-02-22  
yusimiao 写道
LZ说的第一条:有序的,可重复集合,说的有序的是什么?是指排序的意思吗?list应该不会自然排序的吧,这有点不理解“有序的是什么意思”


谢谢 1楼提出的问题 2楼的解释 ,是我表达不准确,解释一下
这个序指的是序号(索引)的序,不是顺序的序,主要是和Set的对比而产生的说法。
对List排序的相关文章我会尽快总结呈现给大家。
2 楼 devilyard 2013-02-22  
yusimiao 写道
LZ说的第一条:有序的,可重复集合,说的有序的是什么?是指排序的意思吗?list应该不会自然排序的吧,这有点不理解“有序的是什么意思”


有序指的是List中的元素是可以进行排序,而不像Map那样是无法排序的
1 楼 yusimiao 2013-02-22  
LZ说的第一条:有序的,可重复集合,说的有序的是什么?是指排序的意思吗?list应该不会自然排序的吧,这有点不理解“有序的是什么意思”

相关推荐

    java基础-list_map_等等的基本概念

    Java基础中的List和Map是两种重要的数据结构,它们在编程中有着广泛的应用。List是一种有序的集合,允许存储重复的元素。Map则是一种键值对的集合,每个键是唯一的,对应一个值。 List接口是Java集合框架的一部分,...

    java List 深度复制方法

    在Java编程中,数据结构是程序设计的基础,而List接口作为集合框架的重要组成部分,常常用于存储有序的元素序列。当我们需要复制一个List时,可能会遇到浅复制和深复制的概念。浅复制只复制对象本身,而不复制它引用...

    《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)

    《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析 - java相关技术(partner4java专栏)

    java反射,获取所有属性、方法以及List集合类

    首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`方法或者对象的`getClass()`方法来获取`Class`对象。一旦我们有了`Class`对象,就可以进一步...

    Java基础 学习笔记 Markdownr版

    2. 集合:在13集合.md中,详细讲解了Java集合框架,包括ArrayList、LinkedList、HashSet、HashMap等基本集合类的使用,以及List、Set、Map接口的特性。此外,还可能涉及泛型的概念,泛型(14泛型.md)提高了代码的...

    java基础PPTJava基础PPT

    这份"Java基础PPT"涵盖了Java编程的基础知识,对于初学者或希望巩固基础知识的开发者来说是宝贵的资源。PPT的重复标题暗示内容可能深入且全面,旨在系统地讲解Java的核心概念。 在Java的基础学习中,首先会接触到的...

    java基础资料

    "java基础资料"涵盖的应该是Java编程的基础概念和技能,适合初学者入门。以下是基于这个主题的详细知识点讲解: 1. **Java语言简介**:Java是由James Gosling在1995年创建的,它的设计目标是“一次编写,到处运行”...

    java基础--list(ArrayList、LinkedList、匿名类).docx

    【Java基础——List接口详解(ArrayList、LinkedList、匿名类)】 在Java编程中,List接口是集合框架的重要组成部分,提供了有序存储元素的功能。ArrayList和LinkedList是List接口的两种主要实现,它们各有优缺点,...

    Java基础课件 全套pdf版 java培训

    "Java基础课件 全套pdf版 java培训"提供了一套完整的初级到中级Java学习资源,适合初学者或希望巩固基础知识的开发者。这些教程涵盖了Java语言的基础到一些进阶主题,以下是各章节的主要知识点: 1. **Java基本语法...

    java课件 java基础教程

    Java集合框架是处理对象组的重要工具,包括List(有序、可重复,如ArrayList和LinkedList)、Set(无序、不重复,如HashSet和TreeSet)和Map(键值对,如HashMap和TreeMap)等接口及其实现类。 6. **输入/输出(I/O...

    Java基础尚硅谷宋红康学习笔记

    【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...

    Java基础知识笔试题及答案

    Java 集合框架是 Java 语言的一个重要组件,提供了一些预定义的集合类,例如 List、Set 和 Map。这些集合类可以用于存储和操作大量数据,提高程序的效率和可读性。 八、Java 泛型 Java 泛型是一种类型参数化机制,...

    黑马程序员java基础试题、笔记

    "黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...

    java基础练习题 (目前到集合内含三个小综合案例)

    这份"java基础练习题(目前到集合内含三个小综合案例)"涵盖了Java的基础知识,旨在帮助学习者巩固并提升Java编程技能。从JDK(Java Development Kit)入门到集合框架的学习,这是一个全面了解和实践Java编程的重要...

    java基础所有例子

    "java基础所有例子"这个主题涵盖了Java语言的核心概念和基本用法。以下是对这些基础概念的详细阐述: 1. **变量与数据类型**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double...

    java基础课件 ppt

    这份"java基础课件 ppt"包含了学习Java基础知识的关键内容,对于初学者或是需要巩固基础的开发者来说,是一份宝贵的学习资源。 首先,Java的基础部分通常涵盖以下几个核心概念: 1. **Java环境设置**:学习Java的...

    Java基础教程完整版

    Java基础教程完整版 Java基础教程完整版是JAVE_LOVER作者提供的一系列Java教程,总共包含18个章节,涵盖了JavaSE基本...Java基础教程完整版涵盖了JavaSE基本知识点、UML建模、单元测试等内容,是Java学习的不二之选。

    Java基础案例教程(第2版)-课后习题答案.zip

    《Java基础案例教程(第2版)》是一本专为初学者设计的教材,旨在帮助学习者掌握Java语言的基础知识,并通过实践案例加深理解。本教程的课后习题答案包含在"Java基础案例教程(第2版)-课后习题答案.zip"压缩包中,...

    Java基础案例教程(第2版)_PPT.zip

    《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其PPT形式的压缩包提供了清晰、直观的教学材料。在深入探讨这些知识点之前,我们首先了解一下Java语言的基础概念。 Java是一种面向对象...

Global site tag (gtag.js) - Google Analytics