List基本用法
List最为Collection接口的子接口,当然可以使用Collection接口里的全部方法。而且由于List是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法:
public class ListTest {
    public static void main(String[] args) {
        List names = new ArrayList();
        //向names集合中添加三个元素
        names.add("lmx");
        names.add("wgl");
        names.add(new String("孙悟空"));
        System.out.println(names);
        //将新字符串对象插入在第二个位置
        names.add(1, new String("猪八戒"));
        //使用for循环遍历list
        for(int i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
        //删除第三个元素
        names.remove(2);
        System.out.println(names);
        //判断指定元素在List集合中的位置:输出1,表明位于第二位
        System.out.println(names.indexOf(new String("猪八戒")));
        //将第二个元素替换成新的字符串对象
        names.set(1, new String("沙僧"));
        System.out.println(names);
        //将names集合的第二个元素(包括)到第三个元素(不包括)截取成子集合
        System.out.println(names.subList(1, 2));
    }
}

List判断两个对象只要通过Equals()方法比较返回true即可,所以如果一个对象重写了equals()方法且返回值总是true,那么跟List集合中的元素比较时总是相等。看下面程序:
class A {
    public boolean equals(Object obj) {
        return true;
    }
}
public class ListTest2 {
    public static void main(String[] args) {
        List names = new ArrayList();
        names.add(new String("lmx"));
        names.add(new String("wgl"));
        names.add(new String("孙悟空"));
        System.out.println(names);
        //删除集合中的A对象,将导致第一个元素被删除
        names.remove(new A());
        System.out.println(names);
        //删除集合中的A对象,再次删除集合中的第一个元素
        names.remove(new A());
        System.out.println(names);
    }
}

与Set只提供了一个iterator()方法不同,List还额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法:
public class ListIteratorTest {
    public static void main(String[] args) {
        String[] names = {
                "lmx",
                "wgl"
        };
        List nameList = new ArrayList();
        for(int i = 0; i < names.length; i++) {
            nameList.add(names[i]);
        }
        ListIterator lit = nameList.listIterator();
        while(lit.hasNext()) {
            System.out.println(lit.next());
            //在指定位置插入一个元素
            lit.add("-----分隔符-----");
        }
        System.out.println("=====下面开始反向迭代=====");
        while(lit.hasPrevious()) {//是否还有上一个元素
            System.out.println(lit.previous());
        }
    }
}
从上面程序中可以看出,使用ListIterator迭代List集合时,开始业务要采用正向迭代,即先使用next()方法进行迭代,在迭代过程中可以使用add()方法向上一次迭代元素的后面添加一个新元素。运行上面的程序,看到如下结果:

下面代码使用LinkedList来实现队列和栈的操作:
public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList names = new LinkedList();
        //将字符串元素加入队列的尾部
        names.offer("孙悟空");
        //将一个字符串元素加入栈的顶部
        names.push("wgl");
        //将字符串元素添加到队列的头部(相当于栈的顶部)
        names.offerFirst("lmx");
        for(int i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
        //访问但不删除栈顶的元素
        System.out.println(names.peekFirst());
        //访问但不删除队列的最后一个元素
        System.out.println(names.peekLast());
        //将栈顶的元素弹出"栈"
        System.out.println(names.pop());
        //下面输出将看到队列的第一个元素被删除
        System.out.println(names);
        //访问并删除队列的最后一个元素
        System.out.println(names.pollLast());
        //下面输出将看到队列中只剩下中间一个元素
        System.out.println(names);
    }
}
List基本用法的更多相关文章
- EditText 基本用法
		title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ... 
- jquery插件的用法之cookie 插件
		一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ... 
- Java中的Socket的用法
		Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ... 
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
		一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ... 
- python enumerate 用法
		A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ... 
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
		本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ... 
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
		用法: <div id="test"> <span style="color:red">test1</span> tes ... 
- chattr用法
		[root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ... 
- 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)
		vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ... 
- [转]thinkphp 模板显示display和assign的用法
		thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ... 
随机推荐
- Qin Shi Huang's National Road System UVA - 1494(次小生成树)
			秦始皇统一中国之后要在全国修公路连接各个城市,皇帝只想修成最小生成树(距离最小,不考虑人力),一个道士说自己可以不花人力物力修一条路,经过两方妥协,选择max(两个城市人口/(生成树长度-这条路的长度 ... 
- LiveCD及Casper调研
			1.LiveCD原理 LiveCD本质上是ISO 9660/El Torito格式的CD-ROM. 下面对LiveCD涉及的各种技术做了简单的调研. 1.1. CD-ROM CD-ROM是一种光盘存储 ... 
- Ckeditor与Ckfinder(java)整合实现富媒体内容编辑(支持文件上传)
			先来看一下最终的效果图 一.编辑器界面 二.上传图片界面 <!-------------------------------------------------------> 一.安装包下 ... 
- SID(安全标识符)
			creating a SID for the Everyone group. DWORD SidSize; PSID TheSID; LPTSTR p; SidSize = SECURITY_MAX_ ... 
- 【CodeChef】ForbiddenSum
			Portal --> CC ForbiddenSum Solution 场上想到了\(O(NM)\)的做法..然而并没有什么用 首先考虑比较简单的一个问题,给定一个数组\(A\),问这些数不能凑 ... 
- 【learning】加权拟阵与贪心
			首先.. 这篇东西的话算是一个关于拟阵部分知识的小总结,有些语言相对来说偏向便于理解方面,所以可能..有一些说法会不是那么严谨大概是这样  一些概念 线性无关:一组数据中没有一个量可以写成其余量的线 ... 
- 基于 Quartz.NET 实现可中断的任务
			基于 Quartz.NET 实现可中断的任务 Quartz.NET 是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET 允许开发 ... 
- 【DP】【CF855C】 Helga Hufflepuff's Cup
			Description 给你一个树,可以染 \(m\) 个颜色,定义一个特殊颜色 \(k\) , 要求保证整棵树上特殊颜色的个数不超过 \(x\) 个.同时,如果一个节点是特殊颜色,那么它的相邻节点的 ... 
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) D 构造烟花
			D. High Load time limit per test 2 seconds memory limit per test 512 megabytes input standard input ... 
- php 性能优化之opcache - 让你的php性能提升 50%
			性能提升原理:减少文件解析的时间. 我们都知道,程序要运行,得有一个编译或者解析的过程,编译或解析之后的代码才是机器可以运行的. 而 php 是一种解析性语言,在使用php来处理http请求的时候,每 ... 
