黑马程序员技术交流社区

标题: java封装集合 [打印本页]

作者: 你的昵称    时间: 2016-7-9 08:23
标题: java封装集合
对于一般的成员变量,对其提供简单的getter/setter封装即可。而对于一个集合类,不能够这样做。
对于一个简单的成员变量,可以这样:
  1. class Athlete {
  2.     private String name;

  3.     public String getName() {
  4.        return name;
  5.     }

  6.     public void setName(String name) {
  7.        this.name = name;
  8.     }
  9.     // ......
  10. }
复制代码

而如果是一个Set/List/Map或数组,应该:
[1]初始化这个集合类;
[2]提供对单个元素的add/remove;
[3]提供加入另一个集合的方法。如果是基于此初始化,则先保证当前集合无元素;
[4]对于getter方法,应该返回该集合的只读试图;
[5]提供当前集合size。

  1. public class Game {
  2.     private Set<Athlete> players = new HashSet<Athlete>();// 1

  3.     public void addPlayer(Athlete one) {// 2
  4.        players.add(one);
  5.     }

  6.     public void removePlayer(Athlete one) {// 2
  7.        players.remove(one);
  8.     }

  9.     public void addPlayers(Set<Athlete> set) {// 3
  10.        Iterator<Athlete> iter = set.iterator();
  11.        while (iter.hasNext())
  12.            addPlayer(iter.next());
  13.     }

  14.     public void initializaPlayers(Set<Athlete> set) {// 3
  15.        if (getAttendNumbers() > 0)
  16.            players.clear();
  17.        players.addAll(set);
  18.     }

  19.     public Set<Athlete> getAllPlayers() {// 4
  20.        return Collections.unmodifiableSet(players);
  21.     }

  22.     public int getAttendNumbers() {// 5
  23.        return players.size();
  24.     }
  25. }
复制代码

作者: 你的昵称    时间: 2016-7-9 08:24
自己得顶一下!@!!
作者: 怡蓝    时间: 2016-7-9 09:07
好复杂,好复杂,好复杂啊啊啊啊啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2