为了账号安全,请及时绑定邮箱和手机立即绑定

删除数组。

删除数组。

HUH函数 2022-05-12 15:05:49
运行一个简单的拍卖程序,唯一的问题是如果用户在拍卖结束前被删除,他/她的出价应该被删除。我还没有 100% 下降,但我认为我走在正确的道路上。出价必须是数组,现在它有点被删除或只是移动了。这是之前的错误。最高出价:[哇 400 kr, Boy 311 kr, Man 33 kr, Dude 2 kr]命令>删除用户名称>哇哇已从注册表中删除命令>列出拍卖拍卖#1:物品。最高出价:[男孩 311 kr,男子 33 kr,线程“main”中的异常 java.lang.NullPointerExceptionpublic void removeBid(String name) {    for(int a = 0;a < bidIndex; a++) {        if(bids[a].getUser().getName().equals(name)) {            bids[a]=null;            bidIndex--;            break;        }    }    sortBids();public void sortBids() {    if(bidIndex > 1) {        for(int a = 0; a < bidIndex -1; a++) {            for(int b = a + 1; b < bidIndex; b++) {                if(bids[a] == null || bids[a].getBid() < bids[b].getBid()) {                    Bid temp = bids[a];                    bids[a] = bids[b];                    bids[b] = temp;                }            }
查看完整描述

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);


查看完整回答
反对 回复 2022-05-12
?
MYYA

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()]);


查看完整回答
反对 回复 2022-05-12
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信