2015-12-23 4 views
-1

У меня есть два списка наборов. Я хочу присоединиться к ним, как показано ниже. Будет ли сортировка обоих списков, а затем объединение наборов для каждого индекса списков эффективным методом?Объединение списков массивов набора в Java

List A 
    ======= 
    {a, 2, 3} 
    {b, 17, 6} 
    {c, -1, 5} 
    List B 
    ======= 
    {b, "Tommy", "Hill"} 
    {a, "W", "-1"} 
    {c, "l", "O"} 
    Output 
    ====== 
    {a, 2, 3, "W", "-1"} 
    {b, 17, 6, "Tommy", "Hill"} 
    {c, -1, 5, "l", "O"} 
+5

Что вы пробовали? –

+0

Сделал это сообщение! Это нужно считать? Правильно? Правильно!? (Шутки в сторону), результат, который вы хотите, очень ясен. Но, как правило, здесь никто не должен писать код для вас, но помочь вам по пути/начать. Если начать работу - это проблема (может быть), может быть сложно сформулировать проблемную область, а затем просто попросить об этом. «Я хочу сделать X с помощью A, я не знаю, как начать ...», и указатели будут даны, как только у вас будет фундамент, вы можете вернуться и задать еще один вопрос, который будет направлен на него. – Emz

ответ

0

создавать списки

List <String> A1=Arrays.asList(new String[] {"a","2","3"}); 
List <String> A2= // complete it 
List <String> A3= // complete it 

List <String> B1=Arrays.asList(new String[] {"b","Tommy","Hill"}); 
List <String> B2= // complete it 
List <String> B3= // complete it 

Вставьте их в наборе < Список>

Set<List<String>> A=new HashSet<List<String>>(); A.add(A1); A.add(A2); A.add(A3); 
Set<List<String>> B=new HashSet<List<String>>(); B.add(B1); B.add(B2); B.add(B3); 

итерацию на вас комплексы

for (List <String> Ax: A) 
    { 
    String the_index=Ax.get(0); 

    for (List <String> Bx: B) 

поиска по первому пункту

 if (the_index.equals(Bx.get(0))) 
       // Join 
       { 
       List <String> result=new ArrayList<String>(); 

Возьми первый список

   result.addAll(Ax); 

добавить продолжение во втором списке

   result.addAll(Bx.subList(1, Bx.size())); 
       System.out.println(result); 
       } 

Надеется, что это помогает!

0

Вы должны использовать set.retainAll() найти пересечение двух множеств. если пересечение существует, то вы можете использовать JAVA функцию 8 потоков для Concat два набора:

Set<String> combinedSet = Stream.concat(Set1.stream(), set2.stream()) 
       .collect(Collectors.toSet()); 
+0

Возможно ли это на Java 7? –

+1

Поток в новом добавлении в JAVA8 Я не думаю, что он может быть использован в java7 –

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