如何比较三个数组的值?

时间:2018-06-27 09:29:23

标签: java android

我有三个数组

1)serviceDetails

2)documentIdArray

3)servicesArray。

我想将serviceDetailsdocumentIdArray进行比较,如果有任何值匹配,我想从该位置的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)

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);

               }        
             }