Write a java program to find sum of common element in array.

Write a program to read two integer arrays and find the sum of common elements in both the arrays. If there are no common elements return -1 as output.

The return type (integer) should be the sum of common elements.

Assume that all the elements will be distinct.

Input and Output Format

  • Input consists of 2n+1 integers. The first integer input corresponds to n, the number of elements in the array. The next ‘n’ integers correspond to the elements in the array, The last n elements correspond to the elements of the second array.
  • Output consists of a single integer value.

Note: Assume that the maximum number of elements in the array is 20.

Refer sample output for formatting specifications

Sample Input 1:

4

1

2

3

4

2

3

6

7

Sample Output 1:

5

Find the sum of the common element in the array in Java

Following are the steps to find the sum of common elements:

  • Input the size of an array. Create two arrays of size ‘n’.
  • Add elements to both the array. Pass them to display() method.
  • Inside the method, declare and initialize the variable sum to 0.
  • Now, use for loop to iterate over both the array and compare elements of both the array. If they are the same, then add them to the sum variable.
  • At last, return the value in sum.
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.nextLine());
    int[] a = new int[n];
    int[] b = new int[n];
    for (int i = 0; i < n; i++)
      a[i] = Integer.parseInt(sc.nextLine());
    for (int i = 0; i < n; i++)
      b[i] = Integer.parseInt(sc.nextLine());
    System.out.println(display(a, b));

  }

  public static int display(int a[], int b[]) {

    int sum = 0;
    for (int i = 0; i < a.length; i++) {
      for (int j = 0; j < b.length; j++) {
        if (a[i] == b[j])
          sum = sum + a[i];
      }
    }
    if (sum == 0)
      return -1;
    else
      return sum;
  }
}

Output

Sum of Common elements using ArrayList

Following are the steps to find the sum of common elements using ArrayList:

  • Input size of an array. Create two empty array lists.
  • Add elements to both lists. Pass these lists to display() method.
  • Inside the method, use the retainAll() method to find common elements in both lists.
  • Now, the listOne will contain the common elements. Just iterate over the listOne using for each loop and add it to the sum variable.
  • At last, just print the value of the sum.
package com.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class TestJava {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Integer> listOne = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listOne.add(sc.nextInt());
        }
        List<Integer> listTwo = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listTwo.add(sc.nextInt());
        }
        display(listOne,listTwo);
    }

    private static void display(List<Integer> listOne, List<Integer> listTwo) {
        listOne.retainAll(listTwo);
        int sum = 0;
        System.out.println("Common Elements "+listOne);
        for ( Integer list1:listOne) {
            sum = sum + list1;
        }
        System.out.println("Sum is "+sum);
    }
}

Output

Sum of Common elements using Java 8 Stream filter

Following are the steps to find the sum of common elements using a stream filter:

  • Input size of an array. Create two empty array lists.
  • Add elements to both lists. Pass these lists to display() method.
  • Inside the method, use the following stream filter to find common elements in both lists.
List<Integer> result = listOne.stream()
               .filter(listTwo::contains)
               .collect(Collectors
                       .toList());
  • Now, the result will contain the common elements. Just iterate over the result list using for each loop and add it to the sum variable.
  • At last, just print the value of the sum.
package com.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class TestJava {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Integer> listOne = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listOne.add(sc.nextInt());
        }
        List<Integer> listTwo = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listTwo.add(sc.nextInt());
        }
        display(listOne,listTwo);
    }

    private static void display(List<Integer> listOne, List<Integer> listTwo) {
        List<Integer> result = listOne.stream()
                .filter(listTwo::contains)
                .collect(Collectors
                        .toList());
        int sum = 0;
        System.out.println("Common Elements "+result);
        for ( Integer list1:result) {
            sum = sum + list1;
        }
        System.out.println("Sum is "+sum);
    }
}

Output

Sum of Common elements using Java 8 distinct()

Following are the steps to find the sum of common elements using a distance() method:

  • Input size of an array. Create two empty array lists.
  • Add elements to both lists. Pass these lists to display() method.
  • Inside the method, use the following distinct() method to find common elements in both lists.
List<Integer> result = listOne.stream().distinct()
                .filter(listTwo::contains)
                .collect(Collectors
                        .toList());
  • Now, the result will contain the common elements. Just iterate over the result list using for each loop and add it to the sum variable.
  • At last, just print the value of the sum.
package com.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class TestJava {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Integer> listOne = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listOne.add(sc.nextInt());
        }
        List<Integer> listTwo = new ArrayList<>();
        for(int i = 0 ;i<n;i++){
            listTwo.add(sc.nextInt());
        }
        display(listOne,listTwo);
    }

    private static void display(List<Integer> listOne, List<Integer> listTwo) {
        List<Integer> result = listOne.stream().distinct()
                .filter(listTwo::contains)
                .collect(Collectors
                        .toList());
        int sum = 0;
        System.out.println("Common Elements "+result);
        for ( Integer list1:result) {
            sum = sum + list1;
        }
        System.out.println("Sum is "+sum);
    }
}

Output

Thus, in this way, we learn how to find the sum of common elements from an array.