分享
 
 
 

使用Collections

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

下面这张表格总结了用一个集合能做的所有事情(亦可对Set和List做同样的事情,尽管List还提供了一些额外的功能)。Map不是从Collection继续的,所以要单独对待。

boolean add(Object) *保证集合内包含了自变量。假如它没有添加自变量,就返回false(假)

boolean addAll(Collection) *添加自变量内的所有元素。假如没有添加元素,则返回true(真)

void clear() *删除集合内的所有元素

boolean contains(Object) 若集合包含自变量,就返回“真”

boolean containsAll(Collection) 若集合包含了自变量内的所有元素,就返回“真”

boolean isEmpty() 若集合内没有元素,就返回“真”

Iterator iterator() 返回一个反复器,以用它遍历集合的各元素

boolean remove(Object) *如自变量在集合里,就删除那个元素的一个实例。假如已进行了删除,就返回“真”

boolean removeAll(Collection) *删除自变量里的所有元素。假如已进行了任何删除,就返回“真”

boolean retainAll(Collection) *只保留包含在一个自变量里的元素(一个理论的“交集”)。假如已进行了任何改变,就返回“真”

int size() 返回集合内的元素数量

Object[] toArray() 返回包含了集合内所有元素的一个数组

*这是一个“可选的”方法,有的集合可能并未实现它。若确实如此,该方法就会碰到一个UnsupportedOperatiionException,即一个“操作不支持”违例,详见第9章。

下面这个例子向大家演示了所有方法。同样地,它们只对从集合继续的东西有效,一个ArrayList作为一种“不常用的分母”使用:

//: Collection1.java

// Things you can do with all Collections

package c08.newcollections;

import java.util.*;

public class Collection1 {

// Fill with 'size' elements, start

// counting at 'start':

public static Collection

fill(Collection c, int start, int size) {

for(int i = start; i

c.add(Integer.toString(i));

return c;

}

// Default to a "start" of 0:

public static Collection

fill(Collection c, int size) {

return fill(c, 0, size);

}

// Default to 10 elements:

public static Collection fill(Collection c) {

return fill(c, 0, 10);

}

// Create & upcast to Collection:

public static Collection newCollection() {

return fill(new ArrayList());

// ArrayList is used for simplicity, but it's

// only seen as a generic Collection

// everywhere else in the PRogram.

}

// Fill a Collection with a range of values:

public static Collection

newCollection(int start, int size) {

return fill(new ArrayList(), start, size);

}

// Moving through a List with an iterator:

public static void print(Collection c) {

for(Iterator x = c.iterator(); x.hasNext();)

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

System.out.println();

}

public static void main(String[] args) {

Collection c = newCollection();

c.add("ten");

c.add("eleven");

print(c);

// Make an array from the List:

Object[] array = c.toArray();

// Make a String array from the List:

String[] str =

(String[])c.toArray(new String[1]);

// Find max and min elements; this means

// different things depending on the way

// the Comparable interface is implemented:

System.out.println("Collections.max(c) = " +

Collections.max(c));

System.out.println("Collections.min(c) = " +

Collections.min(c));

// Add a Collection to another Collection

c.addAll(newCollection());

print(c);

c.remove("3"); // Removes the first one

print(c);

c.remove("3"); // Removes the second one

print(c);

// Remove all components that are in the

// argument collection:

c.removeAll(newCollection());

print(c);

c.addAll(newCollection());

print(c);

// Is an element in this Collection?

System.out.println(

"c.contains(\"4\") = " + c.contains("4"));

// Is a Collection in this Collection?

System.out.println(

"c.containsAll(newCollection()) = " +

c.containsAll(newCollection()));

Collection c2 = newCollection(5, 3);

// Keep all the elements that are in both

// c and c2 (an intersection of sets):

c.retainAll(c2);

print(c);

// Throw away all the elements in c that

// also appear in c2:

c.removeAll(c2);

System.out.println("c.isEmpty() = " +

c.isEmpty());

c = newCollection();

print(c);

c.clear(); // Remove all elements

System.out.println("after c.clear():");

print(c);

}

} ///:~

通过第一个方法,我们可用测试数据填充任何集合。在当前这种情况下,只是将int转换成String。第二个方法将在本章其余的部分经常采用。

newCollection()的两个版本都创建了ArrayList,用于包含不同的数据集,并将它们作为集合对象返回。所以很明显,除了Collection接口之外,不会再用到其他什么。

print()方法也会在本节经常用到。由于它用一个反复器(Iterator)在一个集合内遍历,而任何集合都可以产生这样的一个反复器,所以它适用于List和Set,也适用于由一个Map生成的Collection。

main()用简单的手段显示出了集合内的所有方法。

在后续的小节里,我们将比较List,Set和Map的不同实现方案,同时指出在各种情况下哪一种方案应成为首选(带有星号的那个)。大家会发现这里并未包括一些传统的类,如Vector,Stack以及Hashtable等。因为不管在什么情况下,新集合内都有自己首选的类。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有