首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中重构这个HashSet

如何在Java中重构这个HashSet
EN

Stack Overflow用户
提问于 2015-04-13 04:48:06
回答 3查看 100关注 0票数 3

我对Java很陌生。我有一种HashSet方法,并想知道一种更好的编码方法:

代码语言:javascript
复制
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;
}

做这种事最有效的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-13 04:57:08

我会用:

代码语言:javascript
复制
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")));

当然,如果您永远不会修改您的集合,如果将它作为常量,它将更有效:

代码语言:javascript
复制
 private static final Set<Guitar> GUITARS = 
   Collections.unmodifiableSet(new HashSet(Arrays.asList(
      ...

 public Set<Guitar> getGuitars() {
     return GUITARS;
 }
票数 4
EN

Stack Overflow用户

发布于 2015-04-13 05:01:22

如果希望同时向HashSet添加所有元素,则可以使用Arrays.asList。请查看此问题,以供参考:

一次向Java 5 HashSet添加多个字段?

票数 2
EN

Stack Overflow用户

发布于 2015-04-13 05:23:09

我建议使用番石榴的ImmutableSet生成器

代码语言:javascript
复制
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"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29598023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档