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 方法对模板变量赋值,无论 ...
随机推荐
- c++字符串排序
在主函数中输入10个等长的字符串,用另一函数对它们排序.然后在主函数输出这10个已排好序的字符串. 用两种方法完成. 方法一:用二维数组做函数参数: 方法二:用指向一维数组的指针做函数参数. 方法一: ...
- 常州day5
Task 1 小 W 和小 M 一起玩拼图游戏啦~ 小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选 K条边,使得任意两点间最多有一条路径,并且选择的 K条 ...
- LibreOJ #541. 「LibreOJ NOIP Round #1」七曜圣贤(单调队列)
被以前自己瞎YY的东西坑了T T...单调队列的确是可以维护这种操作的.... 显然这题可以转化成维护不在车上的东西的最小值, 支持插入和删去最早出现的值,然后就可以用单调队列了T T #includ ...
- Winform中的Treeview动态绑定数据库
http://bbs.csdn.net/topics/370139193 SQL code ? 1 2 3 4 5 6 CREATE TABLE [dbo].[Company] ( [Id ...
- 洛谷P1948 [USACO08JAN]电话线Telephone Lines
题目描述 Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is u ...
- jvm容器的关系
jvm实例,tomcat容器,spring容器,在内存中的关系5 1.一个java项目对应一个jvm 吗? 2.tomcat里面加载多个java项目 ,是不是用了一个jvm? 3.java项目中的sp ...
- STL源码分析-string
http://note.youdao.com/noteshare?id=c9b53b7d3379939aae7c05d1ea141a42
- bzoj 1879 状压dp
879: [Sdoi2009]Bill的挑战 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 852 Solved: 435[Submit][Status ...
- Qt ------ stylesheet 样式
1.所有的窗口组件都可以用 setStyleSheet() 设置样式 2.使用样式,显示效果可以不受平台影响,比如保证window 7 和 linux 显示效果是一样的 QVariant 如果 sty ...
- zabbix 监控 Esxi
一.下载模板 http://www.zabbix.org/wiki/Zabbix_Templates 我这边ESXI 版本是6.0的,但是模板只有5,也可以用 二.添加模板 配置 ---> 模板 ...