gpt4 book ai didi

java - 如何处理(else if)动态条件

转载 作者:行者123 更新时间:2023-12-02 12:15:25 26 4
gpt4 key购买 nike

例如,如果我想从固定的爱好列表中选择某个项目该怎么办?假设我从整个列表中选择了(游泳)和(D&D)。

里面我想检查他选择了什么......!我会这样做:

for (String hobby : selectedHobbiesList)
{

if (hobby.equals("Swimming"))
{
return 2;
}
else if (hobby.equals("D&D"))
{
return 1;
}
else
{
return 0;
}
}

我想动态设置条件数量,我知道我可以对所有啤酒花使用else if,但就我而言,我想要条件与选择的爱好一样多......!

这是否可能,或者是否有解决方法。!

<小时/>

更新

我想我没有成功地解释我的观点,对此感到抱歉......!我用一个虚拟示例问了这个问题,因为我在处理方面遇到问题(否则如果)..但我不知道如何将建议的答案应用于我的实际问题..!我将更清楚地解释它。

<小时/>

我正在尝试根据爱好对回收器 View 中的数组列表项目进行重新排序。我在前面的例子中举了两个爱好的例子。但就我而言,爱好不是预设的..!它们最多可以有 8 个,也可以没有! 所以我尝试让“else if”像这样动态:

     // inside the activity class

if (homeData.size() > 0) {

Collections.sort(homeData,
Collections.reverseOrder(new SortedListAdapterCallback<HomeItemModel>(adapter) {
@Override
public int compare(HomeItemModel o1, HomeItemModel o2) {

if (Hawk.contains("Hobbies")) {

ArrayList<String> hobbiesList = Hawk.get("Hobbies");

for (String hobbyItem: hobbiesList ){

if (o1.getCategory().equals("Swimming") && item.equals("Swimming")) {
weight1 = 2;

} else if (o1.getCategory().equals("D&D") && item.equals("D&D")) {
weight1 = 1;

// I know must define all the 8 hobbies but I don't wanna make the code to long..
} else {
weight1 = 0;
}

if (o2.getCategory().equals("Swimming") && item.equals("Swimming")) {
weight2 = 2;

} else if (o2.getCategory().equals("D&D") && item.equals("D&D")) {
weight2 = 1;

} else {
weight2 = 0;
}

}




if (weight1 == weight2) {
return 0;
} else if (weight1 > weight2) {
return 1;
} else {
return -1;
}

}
return 0;

}

@Override
public boolean areContentsTheSame(HomeItemModel oldItem, HomeItemModel newItem) {
return false;
}

@Override
public boolean areItemsTheSame(HomeItemModel item1, HomeItemModel item2) {
return false;
}
}));

}
adapter.notifyDataSetChanged();

// code..

但这不起作用,它只识别其中一个条件,因此如果爱好数组列表包含 {"Swimming","D&D"} 它只会对第一个进行排序,但在我手动执行此操作之前,它会对两者进行排序!

最佳答案

使用 HashMap:

HashMap map = new HashMap<String, Integer>(){
{
put("Other", 3);
put("Swimming", 2);
put("D&D", 1);
}
};



for (String hobby : selectedHobbiesList) {
if(map.containsKey(hobby)){
return map.get(hobby);
}else{
return 0;
}
}

更新:

为什么不在 HomeItemModel 中设置权重?

class HomeItemModel{
private int mWeight;
private String mCat;

HomeItemModel(String cat, int weight){
mWeight = weight;
mCat = cat;
}
public int getWeight(){
return mWeight;
}
public String getCategory(){
return mCat;
}
/*More code*/
}

比较器:

        @Override
public int compare(HomeItemModel o1, HomeItemModel o2){
//DESC order
if(o1.getWeight() == o2.getWeight()){
return 0;
}else if(o1.getWeight() < o2.getWeight()){
return 1;
}else{
return -1;
}
}

添加数据:

homeData.add(new HomeItemModel("Swimming", 1));
homeData.add(new HomeItemModel("D&D", 2));

关于java - 如何处理(else if)动态条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46219806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com