2014-04-02 51 views
-4

讓我們想象一下,我們在java中有一個包含整數和字符串值的arraylist。我想遍歷整個數組列表(只取整數,忽略字符串)以找到列表上最大的數字???我需要一個用於此任務的程序????幫助我程序找到arraylist中的最大數字

+5

您能告訴我們您嘗試過什麼嗎? – PakkuDon

+0

可能的重複http://stackoverflow.com/questions/1484347/java-max-min-value-in-an-array –

+0

使用帶有'instanceof'檢查的for循環。 –

回答

2

Asuming對象的ArrayList,這樣應該工作的東西:

int biggest = Integer.MIN_VALUE; 
for (Object item : list) { 
    if(item instanceof Integer && (Integer) item > biggest) 
     biggest = item; 
} 
+0

@MarkoTopolnik確實,已修復。 – robertoia

0
  1. Don在列表中保留不同的數據類型。廣泛使用泛型。
  2. 你可以使用instanceOf(ArrayList保留整數和字符串)來檢查類型並將int分開放置並獲得最大值。
0
private int getLargestNumber(ArrayList<Objects> list){ 
    int max = Integer.MIN_VALUE; 
    for(int i = 0; i < list.size(); i++){ 
     Object obj = list.get(i); 
     if(obj instanceof Integer && max < (Integer) obj) 
       max = (Integer)obj; 
    } 
    return max; 
} 
0

當你傳遞一個ArayList對象到下面這個函數會從列表返回bigest整數..

public static Integer getLargerInteger(ArrayList list){ 
    ArrayList temp=new ArrayList<Integer>(); 
    for (Object object : list) { 
     if(object instanceof Integer){ 
      temp.add(object); 
     } 
    } 
    return Collections.max(temp); 
} 
0

您可以使用比較器接口嘗試下面的方法,而不是循環遍歷所有的e lements。

List arr = new ArrayList(); 
    arr.add(2); 
    arr.add(5); 
    arr.add(10); 
    arr.add(20); 
    arr.add("s1"); 
    arr.add("s2"); 
    arr.add("s3"); 

    Collections.sort(arr, new Comparator<Object>() { 

     @Override 
     public int compare(Object o1, Object o2) { 

      if(o1 instanceof Integer && o2 instanceof Integer){ 
       Integer ob1 = (Integer) o1; 
       Integer ob2 = (Integer) o2; 
       return ob2.compareTo(ob1); 
      }else{ 
       return -1; 
      } 
     } 

    }); 
    System.out.println(arr.get(0));