2 回答
TA贡献1796条经验 获得超7个赞
数组一旦初始化就不能改变大小。如果您创建一个数组new String[10];,它将永远有 10 个项目(默认情况下为空)。将索引设置为null不会改变这一点。
String[] items = new String[] {"String1", "String2", "String3"};
items[1] = null;
这个数组现在看起来像[String1, null, String3]. 如果您需要尽可能多地更改数组,最好使用List或Map。
如果您想轻松地将一个对象链接到另一个对象,我建议您使用HashMap 。在这种情况下,您似乎会将字符串(名称)链接到 Bid 对象。
Map<String, Bid> bids = new HashMap<String, Bid>();
Bid bid1 = new Bid(/*...*/);
Bid bid2 = new Bid(/*...*/);
// Add bids to the map
bids.put("Wow", bid1);
bids.put("Boy", bid2);
// Get any of these objects
Bid retrievedBid = bids.get("Wow");
// Or remove them
bids.remove("Wow");
HashMaps 在概念上类似于其他语言中的关联数组,在这些语言中存在key -> value关系。每个键都是唯一的,但值可以重复。
如果您需要的最终结果是数组,它们也可以转换为数组。
Bid[] bidsArray = new Bid[0];
bidsArray = bids.values().toArray(bidsArray);
TA贡献1868条经验 获得超4个赞
实现此目的的一种方法是将数组转换为列表,然后使用 Java 流删除出价并转换回来。
List<Bid> bidsList = Arrays.asList(bids);
bidsList = bidsList.stream()
.filter(n -> !n.getUser().getName().equals(name))
.collect(Collectors.toList());
bids = bidsList.toArray(new Bid[bidsList.size()]);
添加回答
举报