是否有充分的理由说明为什么在函数中只有一个return语句是更好的做法?
或者,一旦逻辑正确就可以从函数返回,这意味着函数中可能有很多返回语句?
我有一个包含包装器的TreeSet,它将Foo对象存储在某个对象中position,定义如下:
class Wrapper implements Comparable<Wrapper> {
private final Foo foo;
private final Double position;
...
@Override boolean equals(Object o) {
...
if(o instanceof Wrapper)
return o.getFoo().equals(this.foo);
if(o instanceof Foo)
return o.equals(this.foo);
}
@Override public int compareTo(MarkerWithPosition o) {
return position.compareTo(o.getPosition());
}
}
NavigableSet<Wrapper> fooWrappers = new TreeSet<Wrapper>();
Run Code Online (Sandbox Code Playgroud)
因为我希望我TreeSet被命令position但可以搜索到foo.但是当我执行这些操作时:
Foo foo = new Foo(bar);
Wrapper fooWrapper = new Wrapper(foo, 1.0);
fooWrappers.add(fooWrapper);
fooWrapper.equals(new Wrapper(new Foo(bar), 1.0));
fooWrapper.equals(new Foo(bar));
fooWrappers.contains(fooWrapper);
fooWrappers.contains(new Wrapper(foo, 1.0)); …Run Code Online (Sandbox Code Playgroud) 我只想使用Collections.sort或Arrays.sort先按x排序点(Point类),然后按y排序.
我有一个类Ponto实现Comparable像这样:
public int compareTo(Ponto obj) {
Ponto tmp = obj;
if (this.x < tmp.x) {
return -1;
} else if (this.x > tmp.x) {
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但现在我想在x之后按y排序.
我怎么能通过修改上面的代码来做到这一点?或者这是一种更好,更"干净"的方法吗?我还使用这个代码传递给C++,其中我用类似的可比方法创建了一个名为Point的结构.
java ×3
c++ ×1
coding-style ×1
comparable ×1
comparison ×1
equals ×1
generics ×1
raw-types ×1
set ×1
sorting ×1