2017-12-01 2 views
-10

Also habe ich vier Listen:Wie bekomme ich die kleinste Liste?

1, 2, 3, 4 
1, 2, 3 
1, 2 
1, 2, 3, 4, 5 

Was ist der einfachste Weg, um die man mit kleinster Größe in Elementen des Erhaltens (list.size())?

+0

Ist dies ein Array von Arrays? – tadman

+0

Wie haben Sie diese 4 Listen? Angenommen, es ist eine Liste von Listen: 'listOfLists.stream(). Min (Comparator.comparation (Liste :: Größe)). Get()'. –

Antwort

1

Ich weiß nicht, wie Sie Ihre Listen benannt haben, also werde ich sie einfach Liste a, b, c und d nennen.

public List<?> getLongestList(List<?> a, List<?> b, List<?> c, List<?> d) { 
    if (a.size() >= b.size() && a.size() >= c.size() && a.size() >= d.size()) return a; 
    if (b.size() >= a.size() && b.size() >= c.size() && b.size() >= d.size()) return b; 
    if (c.size() >= a.size() && c.size() >= b.size() && c.size() >= d.size()) return c; 
    if (d.size() >= a.size() && d.size() >= b.size() && d.size() >= c.size()) return d; 
    return null; //impossible to reach 
} 

Ich weiß, dass dies eine sehr hässliche Lösung, aber es ist einfach für Java-Anfänger zu verstehen, was ich nehme an, Sie sind. Wenn zwei oder mehr Listen die gleiche Größe haben und am längsten sind, wird die erste zurückgegeben.

0

Ich denke, die optimale Lösung

public static ArrayList<Integer> getSmallestList(ArrayList<Integer>... input) { 
      ArrayList<Integer> returnValue = null; 
      if (input.length > 0) { 
       returnValue = input[0]; 

       for (ArrayList<Integer> inputIterator : input) { 
        if (inputIterator.size() < returnValue.size()) { 
         returnValue = inputIterator; 
        } 
       } 
      } 
      else 
      { 
       System.out.println("No input provided"); 
      } 
      return returnValue; 
     } 

Der ... Parameter ermöglicht das Verfahren mit einer beliebigen Menge von Variablen aufgerufen werden Sie wie folgt sein würde.

Verwandte Themen