您的位置:首页 > 编程语言 > Java开发

Java:如何封装集合

2008-04-12 21:57 309 查看
对于一般的成员变量,对其提供简单的getter/setter封装即可。而对于一个集合类,不能够这样做。
对于一个简单的成员变量,可以这样:
[align=left]class Athlete {[/align]
[align=left] private String name;[/align]
[align=left] [/align]
[align=left] public String getName() {[/align]
[align=left] return name;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void setName(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
//
......
}
而如果是一个Set/List/Map或数组,应该:
[1]初始化这个集合类;
[2]提供对单个元素的add/remove;
[3]提供加入另一个集合的方法。如果是基于此初始化,则先保证当前集合无元素;
[4]对于getter方法,应该返回该集合的只读试图;
[5]提供当前集合size。

[align=left]public class Game {[/align]
private Set<Athlete> players = new
HashSet<Athlete>();// 1
[align=left] [/align]
[align=left] public void addPlayer(Athlete one) {// 2[/align]
[align=left] players.add(one);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void removePlayer(Athlete one) {// 2[/align]
[align=left] players.remove(one);[/align]
[align=left] }[/align]
[align=left] [/align]
public void
addPlayers(Set<Athlete> set) {// 3
Iterator<Athlete> iter =
set.iterator();
[align=left] while (iter.hasNext())[/align]
[align=left] addPlayer(iter.next());[/align]
[align=left] }[/align]
[align=left] [/align]
public void initializaPlayers(Set<Athlete>
set) {// 3
[align=left] if (getAttendNumbers() > 0)[/align]
[align=left] players.clear();[/align]
[align=left] players.addAll(set);[/align]
[align=left] }[/align]
[align=left] [/align]
public Set<Athlete>
getAllPlayers() {// 4
[align=left] return Collections.unmodifiableSet(players);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public int getAttendNumbers() {// 5[/align]
[align=left] return players.size();[/align]
[align=left] }[/align]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息