分享
 
 
 

使用Lists

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

List(接口) 顺序是List最重要的特性;它可保证元素按照规定的顺序排列。List为Collection添加了大量方法,以便我们在List中部插入和删除元素(只推荐对LinkedList这样做)。List也会生成一个ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元素(同样地,只建议对LinkedList这样做)

ArrayList* 由一个数组后推得到的List。作为一个常规用途的对象容器使用,用于替换原先的Vector。答应我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;与LinkedList相比,它的效率要低许多

LinkedList 提供优化的顺序访问性能,同时可以高效率地在列表中部进行插入和删除操作。但在进行随机访问时,速度却相当慢,此时应换用ArrayList。也提供了addFirst(),addLast(),getFirst(),getLast(),removeFirst()以及removeLast()(未在任何接口或基础类中定义),以便将其作为一个规格、队列以及一个双向队列使用

下面这个例子中的方法每个都覆盖了一组不同的行为:每个列表都能做的事情(basicTest()),通过一个反复器遍历(iterMotion())、用一个反复器改变某些东西(iterManipulation())、体验列表处理的效果(testVisual())以及只有LinkedList才能做的事情等:

//: List1.java

// Things you can do with Lists

package c08.newcollections;

import java.util.*;

public class List1 {

// Wrap Collection1.fill() for convenience:

public static List fill(List a) {

return (List)Collection1.fill(a);

}

// You can use an Iterator, just as with a

// Collection, but you can also use random

// access with get():

public static void PRint(List a) {

for(int i = 0; i System.out.print(a.get(i) + " ");System.out.println();}static boolean b;static Object o;static int i;static Iterator it;static ListIterator lit;public static void basicTest(List a) {a.add(1, "x"); // Add at location 1a.add("x"); // Add at end// Add a collection:a.addAll(fill(new ArrayList()));// Add a collection starting at location 3:a.addAll(3, fill(new ArrayList()));b = a.contains("1"); // Is it in there?// Is the entire collection in there?b = a.containsAll(fill(new ArrayList()));// Lists allow random access, which is cheap// for ArrayList, eXPensive for LinkedList:o = a.get(1); // Get object at location 1i = a.indexOf("1"); // Tell index of object// indexOf, starting search at location 2:i = a.indexOf("1", 2);b = a.isEmpty(); // Any elements inside?it = a.iterator(); // Ordinary Iteratorlit = a.listIterator(); // ListIteratorlit = a.listIterator(3); // Start at loc 3i = a.lastIndexOf("1"); // Last matchi = a.lastIndexOf("1", 2); // ...after loc 2a.remove(1); // Remove location 1a.remove("3"); // Remove this objecta.set(1, "y"); // Set location 1 to "y"// Keep everything that's in the argument// (the intersection of the two sets):a.retainAll(fill(new ArrayList()));// Remove elements in this range:a.removeRange(0, 2);// Remove everything that's in the argument:a.removeAll(fill(new ArrayList()));i = a.size(); // How big is it?a.clear(); // Remove all elements}public static void iterMotion(List a) {ListIterator it = a.listIterator();b = it.hasNext();b = it.hasprevious();

o = it.next();

i = it.nextIndex();

o = it.previous();

i = it.previousIndex();

}

public static void iterManipulation(List a) {

ListIterator it = a.listIterator();

it.add("47");

// Must move to an element after add():

it.next();

// Remove the element that was just prodUCed:

it.remove();

// Must move to an element after remove():

it.next();

// Change the element that was just produced:

it.set("47");

}

public static void testVisual(List a) {

print(a);

List b = new ArrayList();

fill(b);

System.out.print("b = ");

print(b);

a.addAll(b);

a.addAll(fill(new ArrayList()));

print(a);

// Shrink the list by removing all the

// elements beyond the first 1/2 of the list

System.out.println(a.size());

System.out.println(a.size()/2);

a.removeRange(a.size()/2, a.size()/2 + 2);

print(a);

// Insert, remove, and replace elements

// using a ListIterator:

ListIterator x = a.listIterator(a.size()/2);

x.add("one");

print(a);

System.out.println(x.next());

x.remove();

System.out.println(x.next());

x.set("47");

print(a);

// Traverse the list backwards:

x = a.listIterator(a.size());

while(x.hasPrevious())

System.out.print(x.previous() + " ");

System.out.println();

System.out.println("testVisual finished");

}

// There are some things that only

// LinkedLists can do:

public static void testLinkedList() {

LinkedList ll = new LinkedList();

Collection1.fill(ll, 5);

print(ll);

// Treat it like a stack, pushing:

ll.addFirst("one");

ll.addFirst("two");

print(ll);

// Like "peeking" at the top of a stack:

System.out.println(ll.getFirst());

// Like popping a stack:

System.out.println(ll.removeFirst());

System.out.println(ll.removeFirst());

// Treat it like a queue, pulling elements

// off the tail end:

System.out.println(ll.removeLast());

// With the above Operations, it's a dequeue!

print(ll);

}

public static void main(String args[]) {

// Make and fill a new list each time:

basicTest(fill(new LinkedList()));

basicTest(fill(new ArrayList()));

iterMotion(fill(new LinkedList()));

iterMotion(fill(new ArrayList()));

iterManipulation(fill(new LinkedList()));

iterManipulation(fill(new ArrayList()));

testVisual(fill(new LinkedList()));

testLinkedList();

}

} ///:~

在basicTest()和iterMotiion()中,只是简单地发出调用,以便揭示出正确的语法。而且尽管捕捉了返回值,但是并未使用它。在某些情况下,之所以不捕捉返回值,是由于它们没有什么非凡的用处。在正式使用它们前,应仔细研究一下自己的联机文档,把握这些方法完整、正确的用法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有