相关疑难解决方法(0)

一个函数应该只有一个return语句吗?

是否有充分的理由说明为什么在函数中只有一个return语句是更好的做法?

或者,一旦逻辑正确就可以从函数返回,这意味着函数中可能有很多返回语句?

language-agnostic coding-style

781
推荐指数
28
解决办法
23万
查看次数

什么是原始类型,为什么我们不应该使用它?

问题:

  • 什么是Java中的原始类型,为什么我经常听说不应该在新代码中使用它们?
  • 如果我们不能使用原始类型,它有什么替代方案,它是如何更好的?

java generics raw-types

617
推荐指数
13
解决办法
20万
查看次数

为什么Set.contains()似乎没有使用o.equals()?

我有一个包含包装器的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)

java equals set comparable

5
推荐指数
1
解决办法
2430
查看次数

如何先按x然后按y对数组或ArrayList <Point> ASC进行排序?

我只想使用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的结构.

c++ java sorting comparison

1
推荐指数
1
解决办法
2437
查看次数