假设我有一系列字符串项{"item1", "item2", "item3"}
和一些名为相同的布尔值:
Boolean item1 = true
Boolean item2 = true
Boolean item3 = false
我需要遍历数组并停在指定的位置,并能够返回与我所在字符串对应的项目的布尔值。
你会怎么做呢?
答案 0 :(得分:2)
item1
等本地变量或字段?在第一种情况下,没有办法:Java不做动态变量名。使用例如而是Map<String, Boolean>
。在第二种情况下,您可以使用Class.getDeclaredField
方法,但很有可能有更好的方法来达到您的目的。
答案 1 :(得分:1)
简单的方法:
public class BoolArray {
public static void main(String[] args) {
boolean result = checkItem("item1");
System.out.println(result);
}
//or without using return type print false in sysout
public static boolean checkItem(String name){
String items[] = {"item1", "item2", "item3"};
boolean hasItem[] = {true, true, false};
if(name.equals("item1")){
return hasItem[0];
}else if(name.equals("item2")){
return hasItem[1];
}else if(name.equals("item3")){
return hasItem[2];
}else{
return false;
}
}
}
或者您可以使用高级方法(如收集API),然后您可以减少代码行。您可以使用HashTable
HashMap
,从中可以使用键值对。或者您可以使用List with your own custom Pair。
使用HashTable
:
您可以将其作为方法实现,并获得上述特定值。
Hashtable table = new Hashtable();
table.put("item1", true);
table.put("item2", true);
table.put("item3", false);
Enumeration e = table.keys();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
System.out.println(key + " : " + table.get(key));
}
答案 2 :(得分:0)
您可以创建一个返回boolean
的函数:
boolean[] b_arr = {true,true,false};
String[] s_arr = {"I1","I2","I3"};
public boolean check(){
for(int i=0;i<s_arr.length;i++){
if(logic_to_check_your_condition){
return b_arr[i];
}
}
return false;
}
答案 3 :(得分:0)
虽然技术上可行,但采取不同的方法可能会更好。 例如:
DependsOn
这里我们创建一个从String到Boolean的映射。然后,只要您需要属于给定String的布尔值,就可以从地图中获取它。