2014-04-23 62 views
1

我想加入列表的所有String name屬性,用斜槓/分隔。尤其重要的是,例如。最後一項在末尾沒有附加斜線。如何加入列表中特定屬性的所有值?

List<MyClass> list; 

class MyClass { 
    String name; 
} 

這樣做的最佳方式是什麼(我不能使用Java 8)。是否有任何庫,例如Guava,提供這種功能的開箱即用,我可能還沒有找到?

回答

5

番石榴提供了Lists.transform方法,可以讓你提取所有name屬性到一個列表,像這樣:

List<String> names = Lists.transform(list, new Function<MyClass,String>() { 
    public String apply(MyClass obj) { 
     return obj.name; 
    } 
}); 

它還提供了string Joiner,它可以讓你完成的任務:

String namesSeparatedBySlash = Joiner.on("/").join(names); 

當然你可以撥打電話Lists.transform撥打電話join在一個單一的聲明,如下所示:

String namesSeparatedBySlash = Joiner 
    .on("/") 
    .join(
     Lists.transform(list, new Function<MyClass,String>() { 
      public String apply(MyClass obj) { 
       return obj.name; 
      } 
     }) 
    ); 
相關問題