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
,其中任何一种都可能对您有用。我想不出还有什么能帮上忙的。