Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果列表中不存在新列表,如何更好地测试和创建新列表<;列表<;T>&燃气轮机;结构?_Java_List_Guava - Fatal编程技术网

Java 如果列表中不存在新列表,如何更好地测试和创建新列表<;列表<;T>&燃气轮机;结构?

Java 如果列表中不存在新列表,如何更好地测试和创建新列表<;列表<;T>&燃气轮机;结构?,java,list,guava,Java,List,Guava,如果不存在新列表,测试和创建新列表的效果如何 我只找到了这个解决方案: private List<List<Action>> actionList = Lists.newArrayList(); ... f(int index){ Optional<List<Action>> optionalActionList = Optional.fromNullable(actionList.get(index)); if (!optio

如果不存在新列表,测试和创建新列表的效果如何

我只找到了这个解决方案:

private List<List<Action>> actionList = Lists.newArrayList();

...

f(int index){
    Optional<List<Action>> optionalActionList = Optional.fromNullable(actionList.get(index));
    if (!optionalActionList.isPresent()) {
        actionList.add(new ArrayList<Action>());
    }
    actionList.get(index).add(index, new Action());
}
private List actionList=Lists.newArrayList();
...
f(整数索引){
Optional optionalActionList=Optional.fromNullable(actionList.get(index));
如果(!optionalActionList.isPresent()){
添加(新的ArrayList());
}
获取(索引).add(索引,新操作());
}
也许我应该改变存储结构?(添加顺序。能够添加列表的开头和结尾。在两个列表中都很重要)。
如果需要,可以使用谷歌番石榴。

现在还不清楚什么是可选的
。我认为
Optional
的价值在于在方法之间或在存储器中进行通信

此外,我不认为代码做了你认为它是-你要求在一个特定的索引列表,但如果该索引的值是空的,你在最后添加一个新的列表。听起来你想要:

f(int index){
    List<Action> list = actionList.get(index);
    if (list == null) {
        list = new ArrayList<Action>();
        actionList.set(index, list);
    }
    // Note: no need to use index at all here... potentially
    list.add(new Action());
}
f(整数索引){
List=actionList.get(索引);
if(list==null){
列表=新的ArrayList();
actionList.set(索引、列表);
}
//注意:这里根本不需要使用索引…可能
添加(新操作());
}
请注意,我没有在末尾使用
add(index,new Action())
——当时还不清楚您为什么要这样做。您已经使用
index
找到了正确的列表-为什么还要再次使用
index

以上假设“外部”列表的大小已经正确,但对于“不存在”列表,则用空值填充。如果不是这样,则需要检测
索引
何时超出当前外部列表的范围


基本上,如果以上内容没有帮助,请提供更多信息,因为您的问题目前还不清楚。

不清楚
可选的
到底是什么吸引了您。我认为
Optional
的价值在于在方法之间或在存储器中进行通信

此外,我不认为代码做了你认为它是-你要求在一个特定的索引列表,但如果该索引的值是空的,你在最后添加一个新的列表。听起来你想要:

f(int index){
    List<Action> list = actionList.get(index);
    if (list == null) {
        list = new ArrayList<Action>();
        actionList.set(index, list);
    }
    // Note: no need to use index at all here... potentially
    list.add(new Action());
}
f(整数索引){
List=actionList.get(索引);
if(list==null){
列表=新的ArrayList();
actionList.set(索引、列表);
}
//注意:这里根本不需要使用索引…可能
添加(新操作());
}
请注意,我没有在末尾使用
add(index,new Action())
——当时还不清楚您为什么要这样做。您已经使用
index
找到了正确的列表-为什么还要再次使用
index

以上假设“外部”列表的大小已经正确,但对于“不存在”列表,则用空值填充。如果不是这样,则需要检测
索引
何时超出当前外部列表的范围


基本上,如果上述内容没有帮助,请提供更多信息,因为您的问题目前还不清楚。

如果您不是使用Java 7而不是

list = new ArrayList<Action>();
如果将静态导入添加到此文件,则可以将其缩短为

list = newArrayList();

如果您不使用Java 7而不是

list = new ArrayList<Action>();
如果将静态导入添加到此文件,则可以将其缩短为

list = newArrayList();

谢谢你的回答。是,不需要索引。添加。这是我的错。我认为番石榴提供了这样做的方法。@K.G.V:番石榴提供了
MultiSet
MultiMap
Table
,其中任何一种都可能对您有用。我想不出还有什么能帮上忙的。谢谢回答。是,不需要索引。添加。这是我的错。我认为番石榴提供了这样做的方法。@K.G.V:番石榴提供了
MultiSet
MultiMap
Table
,其中任何一种都可能对您有用。我想不出还有什么能帮上忙的。