我正在使用Java 1.6,
我有这门课
import java.util.ArrayList;
import java.util.List;
public class TestDrive
{
public TestDrive()
{
super();
}
public static void main( String[] args )
{
TestDrive testDrive = new TestDrive();
List<Preference> prefs = new ArrayList<Preference>();
Preference pref1 = new Preference();
pref1.setType( "BREAKFAST" );
pref1.setCode( "Eggs" );
prefs.add( pref1 );
Preference pref2 = new Preference();
pref2.setType( "SPORTS" );
pref2.setCode( "Basket" );
prefs.add( pref2 );
Preference pref3 = new Preference();
pref3.setType( "BREAKFAST" );
pref3.setCode( "Milk" );
prefs.add( pref3 );
Preference pref4 = new Preference();
pref4.setType( "SPORTS" );
pref4.setCode( "Tennis" );
prefs.add( pref4 );
//The list may contains more and more Preference objects of different types not only SPORTS and BREAKFAST
}
public static class Preference
{
Preference()
{
super();
}
private String type;
private String code;
public void setType( String pType )
{
this.type = pType;
}
public String getType()
{
return type;
}
public void setCode( String pCode )
{
this.code = pCode;
}
public String getCode()
{
return code;
}
}
}对相同类型的首选项进行分组的最有效方法是什么,换句话说,我只想要一个print语句来打印这一行。
早餐(鸡蛋,牛奶),运动(篮子,网球),.
发布于 2014-07-17 13:36:42
您可以使用HashMap,其中key是Preference#type,值是List<Preference>。
Map<String, List<Preference>> map =
new LinkedHashMap<String, List<TestDrive.Preference>>();
for(Preference e : prefs) {
List<Preference> list = map.get(e.getType());
if(list == null) {
list = new ArrayList<TestDrive.Preference>();
map.put(e.getType(), list);
}
list.add(e);
}
for(Entry<String, List<Preference>> l : map.entrySet()) {
System.out.println(l.getKey() + " " + l.getValue());
}在toString之后添加到Preference
@Override
public String toString() {
return code;
}输出:
BREAKFAST [Eggs, Milk]
SPORTS [Basket, Tennis]发布于 2014-07-17 13:37:00
最有效的方法?这取决于你需要什么。
没有任何具体要求的最佳方法?你可以用一个
Map<String,Set<String>> preferencesByType = new HashMap<String,Set<String>>();
for (Preference p : prefs) {
Set<String> group = preferencesByType.get(p.getType());
if (group == null) {
group = new HashSet<String>();
preferencesByType.put(p.getType(), group);
}
group.add(p.getCode());
}顺便说一下,您应该考虑定义自己的构造函数Preference(String type, String code),而不是使用setter。
https://stackoverflow.com/questions/24805052
复制相似问题