`

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_等等的基本概念,适用于零基础的入门培训。

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

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

    Java基础知识点总结.docx

    &lt; java.util &gt;List接口 78 &lt; java.util &gt;Set接口 80 &lt; java.util &gt;Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...)...

    java基础集合篇.wps

    整理了一下java基础的集合部分,有list,map,set等及其相关。

    java基础遍历list集合

    遍历list集合

    Java 基础面试题

    该文档主要整理了常见的Java基础面试题,包含以下内容: 1. 抽象类和接口的区别 2. 什么时候使用抽象类,什么时候使用接口 3. 八大基本数据类型,所占字节数 4. List、Set、Map的区别 5. 什么情况下使用List、...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    JAVA基础课程讲义

    LIST接口 137 SET接口 138 Map接口 138 Iterator接口 139 遍历集合 140 Collections工具类 141 Comparable接口 141 equals和hashcode方法 143  泛型 144 思考作业 145 上机作业 145 第八章 IO技术 146 为什么需要...

    Java-Java集合体系-List-Set

    Java-Java集合体系-List-Set 内容概要:总结了Java集体...适合人群:有编程基础和Java基础的小伙伴 适合场景:开发和面试中必备,Java集合体系是许多框架的基础,在开发中大量使用,面试题也是必问的题目,非常重要。

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

    List最全总结( ArrayList, LinkedList, 匿名类)

    Java基础实战_Bank项目_081

    1. 将 Customer 属性的声明修改为List 类型,不再使用 2. 修改 Bank 构造器,将 customers 属性的声明修改为List 类型,不再

    java list map基础代码,经常需要eclipse开发复制的需要

    java list map基础代码,经常需要eclipse开发复制的需要

    Java基础最全笔记文档

    Java基础笔记分为 Java基础篇 和 Java加强篇 Java基础篇包括: 1. Java环境搭建、Java快速入门、IDEA开发工具 2. Java基础语法、类型转换、运算符、Scanner 3. 分支结构、循环结构、随机数 4. 数组详解、Debug工具...

    Java基础(韩顺平版)笔记详

    韩顺平版Java基础笔记是一套详尽的Java入门教程,内容包括: Java语言概述和环境搭建 基本数据类型、变量和运算符 控制语句:条件语句和循环语句 数组和字符串处理 面向对象编程:类和对象、继承、封装、多态 异常...

    Java基础加强_ArrayList_HashSet的比较及Hashcode分析

    Java基础加强_ArrayList_HashSet的比较及Hashcode分析

    java面试题大全-基础方面

    Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ ...

    Java基础知识点.html

    Java基础思维导图对应html版本资源: 类加载器 ClassLoader 反射 Stream 流 函数式编程 Lambda 表达式 网络编程-协议 网络编程-端口 网络编程-IP 多线程 IO流-字节流 IO流-字符流 IO流-转换流 File Map HashMap ...

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    动力节点_Java基础视频教程111_List的基本操作

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

    动力节点_Java基础视频教程161_List中存储Map

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

Global site tag (gtag.js) - Google Analytics