如果其中一个值为空,如何跳过比较?

我正在使用libGDX – Ashley作为实体系统框架。 我的问题是我不知道如何避免有一个java.lang.NullPointerException使用Comparator<Entity>实体比较。 有一种情况,实体从引擎中移除,但Comparator器仍在继续。 现在,如果附近的其中一个为空,我该如何跳过比较?

 @Override public int compare(Entity nearby1, Entity nearby2) { Vector2 ownerPos = Mapper.transform.get(owner).position; Vector2 nearbyPos1 = Mapper.transform.get(nearby1).position; // possible null Vector2 nearbyPos2 = Mapper.transform.get(nearby2).position; // possible null return ... } 

当我sortingArray<Entity>例如,使用我的自定义比较器,它返回一个错误,因为其中一个实体为null或一个组件实体为空。 我不知道要回来做什么比较跳过。

 boolean skip = ownerPos == null || nearbyPos1 == null || nearbyPos2 == null; if(skip) { return ??? } 

我正在考虑使用try-catch语句来跳过sorting。 但是这个performance是否安全?

 try { array.sort(comparator); } catch(Exception e) { } 

我想说这个责任应该在比较中。 换句话说,如果一个是null,另一个不是,那么compare应该返回-1,如果两个都是null,它应该返回0(你可能会认为返回-1,但这会违反反身性的要求)。