我有三个数组
1)serviceDetails
2)documentIdArray
3)servicesArray。
我想将serviceDetails
与documentIdArray
进行比较,如果有任何值匹配,我想从该位置的servicesArray
获取值。
serviceDetails = (ArrayList<String>) task.getResult().getDocuments().get(position).get("services");`
for(int i=0;i<serviceDetails.size();i++){
if(serviceDetails.get(i).equals(documentIdArray.get(i))){
String strService=serviceListArray.get(i);
servicesArray.add(strService);
((listViewHolder)holder).serviceTv.setText(servicesArray.toString());
}
}
示例:
serviceDetails=(a,b,c,d) documentIdArray=(b,a,f,d) serviceListArray=(1,2,3,4)
output:servicesArray=(2,1,4)
答案 0 :(得分:1)
您需要使用嵌套的for循环
for(int i = 0;i < serviceDetails.size(); i++){
for (int j=0; j<documentIdArray.size();j++){
if(serviceDetails.get(i).equalsIgnoreCase(documentIdArray.get(j))){
servicesArray.add(serviceListArray[j]);
}
}
}
答案 1 :(得分:0)
您可以使用此
for(int i=0;i<serviceDetails.length;i++){
if (Arrays.asList(documentIdArray).contains(serviceDetails[i])) {
Log.d("DEBUG", servicesArray[i]);
}
}
我尚未在IDE上对其进行测试,因此它可能包含错误。
答案 2 :(得分:0)
在您的代码中使用此逻辑
int[] a = new int[]{ 1,2,3,4};
int[] b = new int[]{ 2,1,5,3};
int[] c = new int[]{ 11,22,33,44};
for(int i = 0;i<a.length;i++){
for(int j = 0;j<b.length;j++){
if(a[i] == b[j]){
System.out.println(c[j]);
}
}
}
// 答案:-
22
11
44
答案 3 :(得分:0)
您需要对第二个数组进行排序,或者对每个元素遍历整个数组。
根据您的示例,您需要在第一个数组中放置该位置。尝试下面的代码。
Collections.sort(documentIdArray);
for(char c : serviceDetails)
{
//This can return the position of the passed value in log n
int k = doBinarySearch(c);
if(k != -1){
String strService=serviceListArray.get(k);
servicesArray.add(strService);
}
}