Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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
方法/构造函数中的ArrayList-Java_Java_Arraylist - Fatal编程技术网

方法/构造函数中的ArrayList-Java

方法/构造函数中的ArrayList-Java,java,arraylist,Java,Arraylist,在谷歌搜索之后,我找不到答案,我对Java不太熟悉,我大部分时间使用C语言,我知道使用C语言是可能的,而且可能是Java语言 Ps:对不起,这里的亮点,我不知道怎么用 我有一个构造器: public WeaponsData(ArrayList<NPC> _drop, ArrayList<NPC> _buy, ArrayList<NPC> _sell) { } 公共武器数据(ArrayList\u drop,ArrayList\u buy,ArrayList\

在谷歌搜索之后,我找不到答案,我对Java不太熟悉,我大部分时间使用C语言,我知道使用C语言是可能的,而且可能是Java语言

Ps:对不起,这里的亮点,我不知道怎么用

我有一个构造器:

public WeaponsData(ArrayList<NPC> _drop, ArrayList<NPC> _buy, ArrayList<NPC> _sell) { }
公共武器数据(ArrayList\u drop,ArrayList\u buy,ArrayList\u sell){
然后,当我尝试创建对象并直接在其上创建ArrayList()时,它不起作用:

public static WeaponsData AngelicAxe = new WeaponsData(new ArrayList<NPC>() { new NPC("Rat", "None", 0), new NPC("Dog", "None", 0) },
                new ArrayList<NPC>() { new NPC("Player", "All", 0) },
                new ArrayList<NPC>() { new NPC("Cain", "First", 5000) }
                );
public static WeaponsData AngelicAxe=new WeaponsData(new ArrayList(){new NPC(“老鼠”,“无”,0),new NPC(“狗”,“无”,0)},
新建ArrayList(){newNPC(“玩家”,“所有”,0)},
新ArrayList(){newNPC(“凯恩”,“第一”,5000)}
);
在Java上没有办法做到这一点


谢谢

您需要调用add-on-arraylist来添加元素

没有自定义对象的构造函数

例如:

new ArrayList<NPC>().add( new NPC("Player", "All", 0));
newarraylist().add(newnpc(“Player”,“All”,0));

编辑:如果需要添加链接,则需要使用Arrays.asList(..)。

ArrayList没有必要的构造函数来执行此操作。您可以在调用
Arrays.asList()
时包装参数:

当然,如果您使用番石榴,您可能应该使用一个不可变的集合,因为您显然试图实现一个常量:

public static final WeaponsData ANGELIC_AXE = new WeaponsData(
    ImmutableList.of(
        new NPC("Rat", "None", 0),
        new NPC("Dog", "None", 0)
    ),
// etc.
);

您尝试的内容可以针对数据数组执行,但不能针对
ArrayList

这项工作:

new NPC[] {new NPC(...)};
这并不是:

new ArrayList<NPC>() {new NPC(...)};
newarraylist(){newnpc(…)};
试试这个:

new ArrayList<NPC>(Arrays.asList(new NPC[] { new NPC("Rat", "None", 0), new NPC("Dog", "None", 0)})) 
newarraylist(Arrays.asList(newnpc[]{newnpc(“老鼠”,“没有”,0),newnpc(“狗”,“没有”,0)}))
-->创建NPC的数组,并在数组之外从中创建列表。asList()还可以使用:

ArrayList list=new ArrayList(){{
添加(新NPC(“Rat”,“无”,0));
添加(新NPC(“狗”,“无”,0));
}};

两件事风格+灵活性:

public WeaponsData(ArrayList<NPC> _drop, ArrayList<NPC> _buy, ArrayList<NPC> _sell) { }
如果要使用
{foo,bar,baz}
的语法,请使用数组。像这样:

NPC[] npcs = new NPC[] {foo,bar,bax};  

然后,您可以执行
Arrays.asList(npcs)
操作,将其重新放入
列表中

Java默认不支持的内联初始值设定项。Java有一些“看起来”相似的东西,但并不完全相同

以下是如何定义ArrayList内联(使用称为“双括号初始化”的技术):

还有一组Google Guava库,它有一个非常好的集合库,其中有许多辅助方法,可以帮助创建和操作集合:

查看:如果您正在使用,您可以使用实现创建一个列表
FastList
实现了
java.util.List
以及更丰富的Eclipse集合特定类型。如果您不介意它不支持modCount,那么它可以作为
ArrayList
的替代品。使用
FastList
,您的代码如下所示

public static WeaponsData AngelicAxe = new WeaponsData( 
    FastList.newListWith( 
          new NPC("Rat", "None", 0), 
          new NPC("Dog", "None", 0) 
    ), 
// etc 
); 

注意:我是Eclipse集合的提交者,
add
方法不允许链接add调用,而op需要链接add调用;在本例中,他试图创建一个包含多个元素的列表。可以,但不应该。这是一个很好的技巧,但却是一个糟糕的编码实践!
public WeaponsData(ArrayList<NPC> _drop, ArrayList<NPC> _buy, ArrayList<NPC> _sell) { }
public WeaponsData(Collection<NPC> drops, Collection<NBC> buys, Collection<NPC> sells)  {}  
 Collection.add(element);  
NPC[] npcs = new NPC[] {foo,bar,bax};  
ArrayList<NPC> npcs = new ArrayList<NPC>()
{ {
   add(new NPC());
   add(new NPC());
}};
public WeaponsData(List<NPC> _drop, List<NPC> _buy, List<NPC> _sell) { }
public static WeaponsData AngelicAxe = new WeaponsData(
  Arrays.asList( new NPC("Rat", "None", 0), new NPC("Dog", "None", 0) ),
  Arrays.asList( new NPC("Player", "All", 0) ),
  Arrays.asList( new NPC("Cain", "First", 5000) ) );
public static WeaponsData AngelicAxe = new WeaponsData( 
    FastList.newListWith( 
          new NPC("Rat", "None", 0), 
          new NPC("Dog", "None", 0) 
    ), 
// etc 
);