如何在添加键值后对树图进行排序

KLT*_*LTR 5 java sorting treemap

我有一个由分类树图compareToAccount类.

当我启动树形图时,它会被排序,但是当我尝试使用此功能(为特定帐户添加资金)时,仅当我更改的值不是树形图中的第一个或最后一个时,它才有效.

这是代码.我究竟做错了什么?

 public static void deposit(TreeMap<Account,MyLinkedList<Customer>> map){
            boolean flag = false;
            int num ;
            int amount;
            System.out.println("please enter account number");
            num = s.nextInt();
            //for(Iterator<Account> i = map.;i.hasNext())
            for(Map.Entry<Account, MyLinkedList <Customer>> entry : map.entrySet()){
                if(entry.getKey().getAccNumber() == num){
                    flag = true;
                    System.out.println("Please enter amount");
                    amount = s.nextInt();
                    entry.getKey().setAccBalance(entry.getKey().getAccBalance()+amount);

                    Account temp = entry.getKey();
                    MyLinkedList<Customer> tempList = entry.getValue();
                    map.remove(entry.getKey());
                    map.put(temp, tempList);

                    break;
                }
            }
            if(flag == false) {
                System.out.println("Account doesn't exist");
                return;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 2

如果您必须遍历整个 Map 才能找到具有特定编号的帐户,那么您就达不到使用 Map 的目的。

也许你应该有两张地图。附加地图将是一个HashMap<Integer,Account>,让您Account在固定时间内通过帐号找到一个。

这将允许您摆脱循环(因为一旦您有了给Account定帐号的 ,单个map.get(account)将为您提供相应的值。这将允许您从现有的 中删除或添加条目TreeMap,您可以'迭代条目集时不要执行此操作(好吧,您可以使用条目集上的显式迭代器进行删除,但不能进行插入)。

顺便说一句,除非您TreeMap使用compareTo帐户余额来确定顺序,否则您不必从 TreeMap 中删除条目并使用更新后的余额重新添加它。