【解決方法】複数の人が利用可能で、指定された場所に最も近い場合は、ID が最も低い人を返す必要があります。


こんにちは、このメソッドでは、指定された場所に最も近い利用可能な人を返します。指定された場所に複数の人が最も近い場合は、より低い ID を持つ人を返そうとしています。 (メソッド person.getIdentity() で個人 ID を呼び出すことができます。)しかし、これを行う方法がわかりません。 これが今までの私の方法です。

私が試したこと:

Java
<pre>public Person findNearestAvailable(int location)
    {
        Iterator<Person> it = persons.iterator();
        int nearestDistance = Integer.MAX_VALUE;
        Person nearestAssistant = null;
        while(it.hasNext()) // checks all persons
        {
            Person person = it.next();
            if(person.isAvailable()) //but only the availalble ones
            {
                int distance = location - person.getLocation();
                if(distance < nearestDistance){
                    nearestDistance = distance;
                    nearestPerson = person;
                }
            }
        }
        return nearestPerson;
    }

解決策 1

同じ距離にいる最後の人への参照を保持します。より近い人を見つけるたびに、その人に設定します。 同じ距離の別の ID を見つけたら、ID を比較して最小のものに設定します。
ループの後、距離が最小になり、ID が最も低くなります。

コメント

タイトルとURLをコピーしました