2014-12-04 48 views
0

如何返回最大長度的物體?返回列表<integer>尺寸最大的物體

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    List<Integer>list = new ArrayList<Integer>(); 
    List<Integer>list1 = new ArrayList<Integer>(); 
    HashSet<List<Integer>> hash = new HashSet<List<Integer>>(); 

    list.add(2); 
    list1.add(3); 
    list1.add(4); 
    hash.add(list); 
    hash.add(list1); 
} 

public static List<Integer> meth(HashSet<List<Integer>> hash){ 
    List<Integer> list = new ArrayList<Integer>(); 

    if(hash.isEmpty()){ 
     return list; 
    } 
    else{ 
     for(List<Integer> value : hash){ 
      // probably something here? 
     } 
    } 
    return list; 
} 

我知道list1比列表大,但我怎麼會得到java做到這一點?我想讓它返回List<Integer>中最大的列表。

回答

2
public static List<Integer> meth(HashSet<List<Integer>> hash){ 
    List<Integer> list = new ArrayList<Integer>(); 

    for(List<Integer> value : hash){ 
     if(value.size() > list.size()) { 
      list = value; 
     } 
    } 
    return list; 
} 
  • 請注意,您可以忽略你的if-else-結構。
  • 此解決方案無法區分散列集中最長的列表是否爲零,或散列集爲空。
0

您可以添加以下,而不是您的評論// probably something here?

if (value.size() > list.size()) 
    list = value; 
+0

燁謝謝,這就是我想要的!這麼簡單,但我沒有看到它。 CHEers – Kingsta1993 2014-12-04 23:16:32

1

如果您使用的是Java 8,則可以使用新的Stream API

public static List<Integer> meth(HashSet<List<Integer>> hash){ 
    return hash.stream() 
     .max(Comparator.comparingInt(Collection::size)) 
     .orElse(Collections.emptyList()); 
} 

否則,你可以做的是跟蹤迭代時最大的列表。

List<Integer> largest = Collections.emptyList(); 

for (List<Integer> value : hash) { 
    if (value.size() > largest.size()) { 
     largest = value; 
    } 
} 

return largest; 
+1

你也可以使用'.max(Comparator.comparingInt(Collection :: size))'(+1) – 2014-12-04 23:25:24