如何在Java类中维护指向List的指针?

时间:2012-12-07 23:24:26

标签: java list

我有一个非常简单的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。改变当前“主持人”的最佳方法是什么?这两种方法都可能采用不正确的参数。

3 个答案:

答案 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中有一个指针。实际数据没有两份副本。