2013-06-13 5 views
-5

У меня есть 4 коллекции, каждая из которых содержит время, сохраненное в определенные моменты времени. Я бы сказал, что мой мой вопрос довольно общий, поэтому содержание коллекций не имеет значения. Мне было интересно, как я мог бы объединить эти коллекции в одно и то же время, получить размер и вернуть самую длинную коллекцию. Имеет ли это смысл?цикл через несколько коллекций в java-коде

+3

Пожалуйста, покажите нам, что вы пробовали –

+0

Нет, это не имеет смысла. Можете ли вы дать примеры ввода, ожидаемые результаты и то, что вы пробовали до сих пор? – fge

+0

Было бы неплохо сослаться на документацию Java на классы, которые вы используете. –

ответ

3

Зачем вам перебирать коллекцию, чтобы узнать ее размер? Коллекция имеет size() метод

+0

он говорит «в то же время» что-то ... '4 собрания' ... – pinkpanther

+0

Возможно, он хочет перебирать коллекцию коллекций;) –

0

Если у вас есть коллекции, которые реализуют интерфейс Collection, вы можете просто использовать

Collection.size(); 

обеспечить длину коллекции.

Затем вы можете сравнить результаты звонков по размеру(), чтобы найти самую длинную коллекцию.

Вам не нужно перебирать все предметы в коллекции.

0

Существуют различные способы:

  • Вы могли бы объединение ваших коллекций в один с помощью CollectionUtils из Apache Commons, например
  • Вы можете поместить свои коллекции в другую коллекцию/список. Коллекция реализует Iterator, поэтому вы можете просто перебирать их.
  • Вы можете рекурсивно вызывать метод, заданный в коллекции.

Я думаю, вы должны пойти со вторым подходом и сохранить размер в переменной и заменить его, если новая коллекция больше.

int size = -1; 
for (Collection col : allCollections) { 
    if (col.size() > size) size = col.size(); 
} 
0

Вот ПРИМЕР-

List<Integer> l1=new ArrayList<Integer>(); 
List<Integer> l2=new ArrayList<Integer>(); 
List<Integer> l3=new ArrayList<Integer>(); 
List<Integer> l4=new ArrayList<Integer>(); 

l1.add(1);l1.add(1); 
l2.add(2);l2.add(2);l2.add(2); 
l3.add(3);l3.add(3);l3.add(3);l3.add(3); 
l4.add(4);l4.add(4);l4.add(4); 

System.out.println("L1 size "+l1.size()); 
System.out.println("L2 size "+l2.size()); 
System.out.println("L3 size "+l3.size()); 
System.out.println("L4 size "+l4.size()); 
String array="l1"; 
int i=l1.size(); 
if(i<l2.size()) 
    array="l2"; 
if(i<l3.size()) 
    array="l3"; 
if(i<l4.size()) 
    array="l4"; 
System.out.println("Largest Array is = "+array); 

Вот выход

L1 size 2 
L2 size 3 
L3 size 4 
L4 size 3 
Largest Array is = l4 

Это то, что у хочу?

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