String[] lac1 = {"1", "101", "1101"};
String[] lac2 = {"2", "102", "1102"};
String[] lac3 = {"3", "103", "1103","8", "108", "1108"};
我想在上面的数组中搜索一个值,并获取找到该值的数组列表的数组名称。
e.g。 如果我正在搜索值为102的值,它应该查看所有上面的数组,并在上面的任何数组列表中找到一个数组名称。
或者,如果您可以帮助我获得上述案例的最佳数据结构。
答案 0 :(得分:1)
如果您只使用三个数组,则只需使用if条件
String arraname="";
if (Arrays.asList(lac1).contains("102")) {
arraname="lac1";
}
if (Arrays.asList(lac2).contains("102")) {
arraname="lac2";
}
if (Arrays.asList(lac3).contains("102")) {
arraname="lac3";
}
答案 1 :(得分:0)
我认为解决问题的最佳数据结构是使用字典。 在java中:
Map<int, String> dictionary = new HashMap<int, String>();
//put the data in..
//check existence
string value = map.get(key);
if (value != null) {
...
} else {
// No such key
}
答案 2 :(得分:0)
如果您想要更好的数据结构来存储这些详细信息,我会建议Map
,密钥为String
,值为List<String>
Map<String,List<String>> map = new HashMap<String,List<String>>();
map.put("lac1",lac1List);
map.put("lac2",lac2List);
map.put("lac3",lac3List);
您可以迭代地图并找到所需的密钥。
String val; // value to be search
for(Entry<String,List<String>> entry : map.entrySet()){
if(entry.value().contains(val)){
System.out.println(val+" Present in "+entry.key());
break;
}
}
答案 3 :(得分:0)
对于数组,您可以尝试for
循环
public static void main(String[] args) {
String[] lac1 = {"1", "101", "1101"};
String[] lac2 = {"2", "102", "1102"};
String[] lac3 = {"3", "103", "1103","8", "108", "1108"};
int pos = -1;
if ((pos = getPostion(lac1, "102")) > -1) {
System.out.println("array lac1 , pos:" + pos);
} else if ((pos = getPostion(lac2, "102")) > -1) {
System.out.println("array lac2 , pos:" + pos);
} else if ((pos = getPostion(lac3, "102")) > -1) {
System.out.println("array lac3 , pos:" + pos);
} else {
System.out.println("Not Found!");
}
}
public static int getPostion(String[] arr, String key) {
int pos = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(key)) {
pos = i;
break;
}
}
return pos;
}
<强>输出:强>
array lac2 , pos:1
答案 4 :(得分:0)
public String checkValueInList(String val){
String arrayName = "";
String[] lac1 = {"1", "101", "1101"};
String[] lac2 = {"2", "102", "1102"};
String[] lac3 = {"3", "103", "1103","8", "108", "1108"};
List<String> list1 = getArrayList();
list1.add("lac1");
List<String> list2 = getArrayList();
list2.add("lac2");
List<String> list3 = getArrayList();
list3.add("lac3");
list1.addAll(Arrays.asList(lac1));
list2.addAll(Arrays.asList(lac2));
list3.addAll(Arrays.asList(lac3));
List<List<String>> allLists = new ArrayList<>();
allLists.add(list1);
allLists.add(list2);
allLists.add(list3);
for(List<String> stringList : allLists){
if(stringList.contains(val)){
arrayName = stringList.get(0);
break;
}
}
return arrayName;
}
提供更多详细信息,例如如何将数组中的数据硬编码或从数据库中获取数据?有助于选择更好的收藏。您可以使用键值对和返回键值创建一个映射,而不是列表中的列表。你可以试试!
答案 5 :(得分:0)
一种简单的方法可能是:
public class mapList {
Map<String,String> map;
String[] lac1 = {"1", "101", "1101"};
String[] lac2 = {"2", "102", "1102"};
String[] lac3 = {"3", "103", "1103","8", "108", "1108"};
public mapList(){
map = new HashMap<>();
for(String l1:lac1){ map.put(l1, "lac1"); }
for(String l2:lac2){ map.put(l2, "lac2"); }
for(String l3:lac3){ map.put(l3, "lac3"); }
}
public String search(String val){
return map.get(val);
}
public static void main(String[] args) {
mapList d=new mapList();
System.out.println("1102 is in: " + d.search("1102"));
System.out.println("8 is in: " + d.search("8"));
System.out.println("101 is in: " + d.search("101"));
System.out.println("1108 is in: " + d.search("1108"));
}
}
结果:
1102 位于 lac2 ;中
8 在 lac3 ;中
101 位于 lac1 ;中
1108 位于 lac3 ;