我有一个非常简单的Java类:
public class Party {
private List<String> hosts = new ArrayList<String>();
private String headHost = null;
public void addHost(String name) {
hosts.add(name);
headHost = name;
}
}
但是保持一个字符串保持跟踪列表的指针似乎有点傻......
1。有没有更好的方法来跟踪谁是“主持人”?
并不总是最后一个人添加:
public void setHost(int i) {
headHost = hosts.get(i); // potentially throws an exception based on i
}
public void setHost(String name) {
headHost = name;
}
2。改变当前“主持人”的最佳方法是什么?这两种方法都可能采用不正确的参数。
答案 0 :(得分:2)
目前的版本很好。如果您担心异常,可以对代码应用一些防御性编程:
public void setHost(int i) {
if(i < 0 || i > hosts.size()-1){
throw new IllegalArgumentException("Index is out of range!");
}
headHost = hosts.get(i);
}
public void setHost(String name) {
if(!hosts.contains(name){
throw new IllegalArgumentException("The specified host does not exist.");
}
headHost = name;
}
答案 1 :(得分:1)
List
没有当前的概念,至少在Java中没有。如果您想知道第一个元素是什么,请使用List.get(0)
要获取最后一个元素,请使用hosts.get(hosts.size()-1)
。
您可能还对Stack
类感兴趣,该类具有 LIFO (后进先出)方法,以便更轻松地获取最近输入的元素。
如果由于某种原因您希望能够host
查找String name
,请不要使用List
,请使用Map
(最好是{{1}} 3}})
答案 2 :(得分:1)
你所在的区域只有一个指针。 String是java中的一个对象。
执行此操作时:
public void addHost(String name) {
hosts.add(name);
headHost = name;
}
只有一个带有两个指针的字符串,列表中有一个指针,实例变量headHost中有一个指针。实际数据没有两份副本。