如何在Java中重构此哈希集

如何在Java中重构此哈希集,java,Java,我是Java新手。我有一个HashSet方法,想知道一种更好的编码以下代码的方法: public HashSet<Guitar> getGuitars() { HashSet<Guitar> guitarInformations = new HashSet<Guitar>(); Guitar guitar1 = new Guitar("Gibson", 100, "1987"); Guitar guitar2 = new Guitar

我是Java新手。我有一个HashSet方法,想知道一种更好的编码以下代码的方法:

public HashSet<Guitar> getGuitars() {

    HashSet<Guitar> guitarInformations = new HashSet<Guitar>();
    Guitar guitar1 = new Guitar("Gibson", 100, "1987");
    Guitar guitar2 = new Guitar("Gibson", 200, "1976");
    Guitar guitar3 = new Guitar("Gibson", 300, "1978");
    Guitar guitar4 = new Guitar("Gibson", 400, "1967");
    Guitar guitar5 = new Guitar("Gibson", 500, "1967");
    Guitar guitar6 = new Guitar("Fender", 100, "1922");
    Guitar guitar7 = new Guitar("Fender", 200, "1999");
    Guitar guitar8 = new Guitar("Fender", 300, "1986");
    Guitar guitar9 = new Guitar("Fender", 400, "1933");
    Guitar guitar10 = new Guitar("Fender",500, "1988");
    guitarInformations.add(guitar1);
    guitarInformations.add(guitar2);
    guitarInformations.add(guitar3);
    guitarInformations.add(guitar4);
    guitarInformations.add(guitar5);
    guitarInformations.add(guitar6);
    guitarInformations.add(guitar7);
    guitarInformations.add(guitar8);
    guitarInformations.add(guitar9);
    guitarInformations.add(guitar10);

    return guitarInformations;
}
public HashSet getGuitars(){
HashSet=newhashset();
吉他吉他1=新吉他(“吉布森”,100,“1987”);
吉他吉他2=新吉他(“吉布森”,200,“1976”);
吉他吉他3=新吉他(“吉布森”,300,“1978”);
吉他吉他4=新吉他(“吉布森”,400,“1967”);
吉他吉他5=新吉他(“吉布森”,500,“1967”);
吉他吉他6=新吉他(“Fender”,100,“1922”);
吉他吉他7=新吉他(“Fender”,200,“1999”);
吉他吉他8=新吉他(“挡泥板”,300,“1986”);
吉他吉他9=新吉他(“挡泥板”,400,“1933”);
吉他吉他10=新吉他(“Fender”,500,“1988”);
添加(guitar1);
添加(guitar2);
添加(guitar3);
添加(guitar4);
添加(guitar5);
添加(guitar6);
添加(guitar7);
添加(guitar8);
添加(guitar9);
添加(guitar10);
返回吉他手信息;
}
这样做最有效的方法是什么?

我会使用:

return new HashSet(Arrays.asList(
    new Guitar("Gibson", 100, "1987"),
    new Guitar("Gibson", 200, "1976"),
    new Guitar("Gibson", 300, "1978"),
    new Guitar("Gibson", 400, "1967"),
    new Guitar("Gibson", 500, "1967")));
当然,如果您永远不会修改集合,那么将其作为常量将更有效:

 private static final Set<Guitar> GUITARS = 
   Collections.unmodifiableSet(new HashSet(Arrays.asList(
      ...

 public Set<Guitar> getGuitars() {
     return GUITARS;
 }
private static final Set GUITARS=
Collections.unmodifiableSet(新哈希集(Arrays.asList(
...
公共集getGuitars(){
返回吉他;
}

如果要同时将所有元素添加到HashSet,可以使用Arrays.asList。检查此问题以供参考:


我建议用番石榴汁

公共静态最终ImmutableSet GUITARS=ImmutableSet.of( 新吉他(“吉布森”,100,“1987”), 新吉他(“吉布森”,200,“1976”), 新吉他(“吉布森”,300,“1978”), 新吉他(“吉布森”,400,“1967”), 新吉他(“吉布森”,500,“1967”);
可能直接在new?guitarInformations.add(new Guitari(“Gibson”,100,“1987”))之后添加;我非常喜欢使用as array.asList。它使代码看起来更干净。
public static final ImmutableSet<Guitar> GUITARS= ImmutableSet.of(
    new Guitar("Gibson", 100, "1987"),
    new Guitar("Gibson", 200, "1976"),
    new Guitar("Gibson", 300, "1978"),
    new Guitar("Gibson", 400, "1967"),
    new Guitar("Gibson", 500, "1967"));