2013-06-20 3 views
0

У меня есть список элементов в массиве, как [121,122,121,122,123,121,122] выход должен быть массивом всех повторяющихся элементов, какпоиск кол дублирующих элементов и создавать массивы из них

[121,121,121] 
[122,122,122] 
[123] 

я ограничен в использовании Java 1.4. Это будет наш последний выпуск в этой версии, приложение работает на сервере SAP J2EE, который поддерживает только 1.4.

увидеть полный код с намеком @Subhrajyoti Majumder

размер печатает 9, но когда я итерацию он печатает слишком много .. Вывод должен быть следующие в зависимости от количества доставки

[a1,a2] 
[a3,a4] 
[a6] 
[a7,a8,a9,a10] 

Спасибо заранее.

+3

А что вы пробовали именно? – fge

+3

Java 1.4? Зачем? Замечание из [J2SE 1.4.2] (http://www.oracle.com/technetwork/java/javase/index-jsp-138567.html) * «** J2SE 1.4.2 - это конец технологии Java Technology End of Life (EOL) **. Период перехода EOL начался 11 декабря 2006 года и завершится 30 октября 2008 года, когда J2SE 1.4.2 достигнет срока службы (EOSL) ». * –

+1

это будет наш последний выпуск в этой версии, приложение работает на сервере SAP J2ee, который поддерживает только 1.4. спасибо за ответ .. –

ответ

3

Независимо от вашего решения, если я правильно понял ваш вопрос, тогда ваш ввод будет массивом (который содержит дубликаты), а вывод будет списком дубликатов массивов. У меня есть простой подход к этой проблеме, который был бы Map, где Integer был бы ключом, и значение List. Написан небольшой фрагмент (поддерживается java 1.4).

Map map = new HashMap(); 
int[] array = {121,122,121,122,123,121,122}; 
for(int i=0;i<array.length;i++){ 
    if(map.get(array[i])==null){ // no entry available 
     List list = new ArrayList(); 
     list.add(array[i]); 
     map.put(array[i],list); 
    }else // entry is already available 
     map.get(array[i]).add(array[i]); 
} 

Я знаю, что у вас есть ограничение с Java версии, хотя это может быть проще с Google collection library - guava «s MultiSet. Библиотека предназначена для Java 1.6+.

Сниппет -

Multiset<Inetger> multiSet = HashMultiset.create(); 
int[] array = {121,122,121,122,123,121,122}; 
multiSet.addAll(Arrays.asList(array)); 
for (Inetger i : multiSet.elementSet()) { 
    System.out.println(i + ": " + multiSet.count(i)); 
} 
+0

Да, я согласен, и я пытаюсь использовать ваш код. –

Смежные вопросы