实例化时如何写一个ArrayList?
How to write an ArrayList when instantiating?
可能我是瞎了眼之类的,但我似乎无法弄清楚如何执行以下操作:
我有一个名为 Shopping 的 Class,其构造函数如下:
Shopping shopping = new Shopping(String name, ArrayList <Shop> shops)
class店铺超class4种子店铺,其构造函数是这样的:
Shop shop = new Shop(String name, double area, double income)
我的问题是:在创建购物实例时,我不知道在构造函数的数组列表部分写什么,就像我可以创建一个
Shopping s1 = new Shopping("ABCDE", ?????? <- but don't know what to write here!!!)
有什么帮助吗?
简短的回答是您需要向它传递一个您声明的类型的实例。如果该类型是 ArrayList<Shop>
那么您需要将其中之一传递给它。例如,您可以使用“new ArrayList()”创建其中一个,或者您可能有一些代码可以构建这样一个列表,或者甚至已经有一个,因为它正在对商店列表做其他事情。
但是,您说它必须是 ArrayList
,这让自己陷入了困境。您应该只声明它采用一个列表,并且只有在商店的顺序很重要的情况下。如果顺序不重要,那么只需声明一个 Collection<Shop>
。始终尽可能地声明您的参数 non-specific 。如果是Collection,那么正好有人手上有Set<Shop>
,传给你,就可以了。
说明
您使用
创建对象的新实例
ArrayList<Shop> shops = new ArrayList<>();
然后你添加你的东西
shops.add(firstShop);
shops.add(secondShop);
然后你只需将变量传递给方法
Shopping s1 = new Shopping("ABCDE", shops);
或者如果你想传递一个空列表,你可以简单地在一行中完成
Shopping s1 = new Shopping("ABCDE", new ArrayList<>());
其他列表
是否有特殊原因需要将方法限制为 ArrayList
s? List
还不够吗?如果你调整你也可以传递其他列表并且使用 Java 9 有一个简单的方法可以快速创建列表:
List<Shop> shops = List.of(firstShop, secondShop);
Shopping s1 = new Shopping("ABCDE", shops);
或者更紧凑:
Shopping s1 = new Shopping("ABCDE", List.of(firstShop, secondShop));
两种可能。如果您之前创建过一些商店:
Shop subShop = new Shop("Subway", 2000, 4000);
Shop bookShop = new Shop("B&N", 8000, 9000);
还有一个列表:
ArrayList<Shop> shops = new ArrayList<>();
shops.add(subShop);
shops.add(bookShop);
然后你可以这样创建它:
Shopping shopping = new Shopping("Plaza", shops);
但是,在这种情况下,我会更改 Shopping
以采用 List
(甚至 Collection
,如 Zag 指出的那样),而不是 ArrayList
你可以这样做:
Shopping shopping = new Shopping("Plaza", List.of(subShop, bookShop));
如果将对 Shop
构造函数的调用放在对 List::of
.
的调用中,您甚至可以将其全部写在一行中
Shopping shopping = new Shopping(name, new ArrayList<>());
或者如果您想要一个已经包含一些项目的列表:
List<Shop> shops = new ArrayList<>();
shops.add(new Shop(...));
shops.add(new Shop(...));
Shopping shopping = new Shopping(name, shops);
如果需要,您也可以在一行中完成:
Shopping shopping = new Shopping(name, Arrays.asList(new Shop(...), new Shop(...)));
可能我是瞎了眼之类的,但我似乎无法弄清楚如何执行以下操作:
我有一个名为 Shopping 的 Class,其构造函数如下:
Shopping shopping = new Shopping(String name, ArrayList <Shop> shops)
class店铺超class4种子店铺,其构造函数是这样的:
Shop shop = new Shop(String name, double area, double income)
我的问题是:在创建购物实例时,我不知道在构造函数的数组列表部分写什么,就像我可以创建一个
Shopping s1 = new Shopping("ABCDE", ?????? <- but don't know what to write here!!!)
有什么帮助吗?
简短的回答是您需要向它传递一个您声明的类型的实例。如果该类型是 ArrayList<Shop>
那么您需要将其中之一传递给它。例如,您可以使用“new ArrayList()”创建其中一个,或者您可能有一些代码可以构建这样一个列表,或者甚至已经有一个,因为它正在对商店列表做其他事情。
但是,您说它必须是 ArrayList
,这让自己陷入了困境。您应该只声明它采用一个列表,并且只有在商店的顺序很重要的情况下。如果顺序不重要,那么只需声明一个 Collection<Shop>
。始终尽可能地声明您的参数 non-specific 。如果是Collection,那么正好有人手上有Set<Shop>
,传给你,就可以了。
说明
您使用
创建对象的新实例ArrayList<Shop> shops = new ArrayList<>();
然后你添加你的东西
shops.add(firstShop);
shops.add(secondShop);
然后你只需将变量传递给方法
Shopping s1 = new Shopping("ABCDE", shops);
或者如果你想传递一个空列表,你可以简单地在一行中完成
Shopping s1 = new Shopping("ABCDE", new ArrayList<>());
其他列表
是否有特殊原因需要将方法限制为 ArrayList
s? List
还不够吗?如果你调整你也可以传递其他列表并且使用 Java 9 有一个简单的方法可以快速创建列表:
List<Shop> shops = List.of(firstShop, secondShop);
Shopping s1 = new Shopping("ABCDE", shops);
或者更紧凑:
Shopping s1 = new Shopping("ABCDE", List.of(firstShop, secondShop));
两种可能。如果您之前创建过一些商店:
Shop subShop = new Shop("Subway", 2000, 4000);
Shop bookShop = new Shop("B&N", 8000, 9000);
还有一个列表:
ArrayList<Shop> shops = new ArrayList<>();
shops.add(subShop);
shops.add(bookShop);
然后你可以这样创建它:
Shopping shopping = new Shopping("Plaza", shops);
但是,在这种情况下,我会更改 Shopping
以采用 List
(甚至 Collection
,如 Zag 指出的那样),而不是 ArrayList
你可以这样做:
Shopping shopping = new Shopping("Plaza", List.of(subShop, bookShop));
如果将对 Shop
构造函数的调用放在对 List::of
.
Shopping shopping = new Shopping(name, new ArrayList<>());
或者如果您想要一个已经包含一些项目的列表:
List<Shop> shops = new ArrayList<>();
shops.add(new Shop(...));
shops.add(new Shop(...));
Shopping shopping = new Shopping(name, shops);
如果需要,您也可以在一行中完成:
Shopping shopping = new Shopping(name, Arrays.asList(new Shop(...), new Shop(...)));