The objective is
to group the items together based on common categories.
For e.g.1, if
there are two items(7000090069,7000090070) associated with three
categories (264433,264431,264432) as below :
7000090069 -->
264431
7000090069 -->
264433
7000090070 -->
264433
7000090070 -->
264432
then the output
will be 7000090069,7000090070_264433,264431,264432
e.g.2, if there
are two items(7000090069,7000090070) associated with three categories
(264431,264432) as
below :
7000090069 -->
264431
7000090070 -->
264432
then the output
will be 7000090069_264431 and 7000090070_264432 in a list.
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test { /** * This class contains items and categories. * The objective is to group the items together based on common categories. * For e.g.1, if there are two items(7000090069,7000090070) associated with three categories (264433,264431,264432) as below : * 7000090069 --> 264431 * 7000090069 --> 264433 * 7000090070 --> 264433 * 7000090070 --> 264432 * then the output will be 7000090069,7000090070_264433,264431,264432 * * e.g.2, if there are two items(7000090069,7000090070) associated with three categories (264431,264432) as below : * 7000090069 --> 264431 * 7000090070 --> 264432 * then the output will be 7000090069_264431 and 7000090070_264432 in a list. */ static class A { long item; long category; public A(long q, long f) { super(); this.item = q; this.category = f; } public long getItem() { return item; } public void setItem(long q) { this.item = q; } public long getCategory() { return category; } public void setCategory(long f) { this.category = f; } } public static void main(String[] args) { A[] arr = new A[9]; arr[0] = new A(7000089688L, 264431); arr[1] = new A(7000089707L, 264432); arr[2] = new A(7000090069L, 264433); arr[3] = new A(7000090047L, 264431); arr[4] = new A(7000090051L, 264432); arr[5] = new A(7000084083L, 264432); arr[6] = new A(7000089688L, 264432); arr[7] = new A(7000090070L, 264433); arr[8] = new A(7000090070L, 264431); List<String> list = new ArrayList<String>(); int length = 0; for (int i = 0; i < arr.length; i++) { length = list.size(); A a = arr[i]; if (list.isEmpty()) { list.add(String.valueOf(a.getItem()) + "_" + String.valueOf(a.getCategory())); continue; } boolean added = false; for (int j = 0; j < length; j++) { String str = list.get(j); String[] strArr = str.split("_"); if (!strArr[0].contains(String.valueOf(a.getItem())) && strArr[1].contains(String.valueOf(a.getCategory()))) { list.set(j, strArr[0] + "," + String.valueOf(a.getItem()) + "_" + strArr[1]); added = true; } else if (strArr[0].contains(String.valueOf(a.getItem())) && !strArr[1].contains(String.valueOf(a.getCategory()))) { boolean isRemoved = false; for (int k = 0; k < length; k++) { String str1 = list.get(k); String[] strings = str1.split("_"); if (strings[1] .contains(String.valueOf(a.getCategory()))) { list.set( j, strArr[0] + "," + strings[0] + "_" + (strArr[1].contains(strings[1]) ? strArr[1] : strArr[1] + "," + strings[1])); list.remove(k); length = list.size(); isRemoved = true; } } if (!isRemoved) { list.set( j, strArr[0] + "_" + strArr[1] + "," + String.valueOf(a.getCategory())); } added = true; } else if (strArr[0].contains(String.valueOf(a.getItem())) && strArr[1].contains(String.valueOf(a.getCategory()))) { added = true; } } if (!added) { list.add(String.valueOf(a.getItem()) + "_" + String.valueOf(a.getCategory())); } } for (Iterator iterator = list.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); System.out.println(string); } } }