2014-11-02 124 views
-1

對於我的編程類,我需要編寫一個代碼打印速度最快,運行速度最快的方法。從數組中獲取最小數字

這是我的本錢:

import java.util.Arrays; 
class Marathon { 
    public static void main (String[] arguments){ ` 
     `String[] names ={ 
       "Alex", "Clair", "Sarah", "Andy", "Anna", "Bob" 
     }; 
     int[] times ={ 
       341, 273, 278, 329, 445, 402, 
     }; 
     for (int i = 0; i < names.length; i++) { 
      System.out.println(names[i]+ ": " + times[i]); 
     } 
    } 
} 

我如何得到它顯示只有最快的人(最低數量)和第二快的人(第二低的數字)。

+0

如何找到最快的? – 2014-11-02 03:30:10

回答

-1

您想先對數組排序,然後打印出數組中的前兩個數組。因爲它是給你的班級的,我不會給你你需要的代碼,但是我給你提供了完美的提示,所有你需要做的就是Google如何對數組進行排序並且在前兩次調用。谷歌Keyswords的「Java數組排序」

0

這裏有一個辦法跑得最快

import java.util.Collections; 
import java.util.HashMap; 
import java.util.Map.Entry; 
class Marathon { 
    public static void main (String[] arguments){   
     HashMap<String, Integer>namez = new HashMap<String, Integer>(); 
     namez.put("Alex", 341); 
     namez.put("Clair",273); 
     namez.put("Sarah",278); 
     namez.put("Andy",329); 
     namez.put("Anna",445); 
     namez.put("Bob",402); 
     Integer min = Collections.min(namez.values()); 
     namez.containsValue(min); 
     for (Entry<String, Integer>entry: namez.entrySet()){ 
      if(entry.getValue()==min){ 
       System.out.println(entry.getKey()+": "+entry.getValue()); 
       String key = entry.getKey(); 
      }    
     }  
    } 
} 

編輯:這實際上是找到最快的方式,並從你的列表中的第二快的人。它只輸出他們的名字,這是Clair和Sarah。我希望它有幫助。

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.HashMap; 
class Marathon { 
    public static void main (String[] arguments){ 
     HashMap<Integer, String>namez = new HashMap<Integer, String>(); 
     namez.put(341,"Alex"); 
     namez.put(273,"Clair"); 
     namez.put(278, "Sarah"); 
     namez.put(329,"Andy"); 
     namez.put(445,"Anna"); 
     namez.put(402, "Bob"); 
     ArrayList<Integer> timez = new ArrayList<Integer>(); 
     timez.add(341); 
     timez.add(273); 
     timez.add(278); 
     timez.add(329); 
     timez.add(445); 
     timez.add(402); 
     Collections.sort(timez); 
     System.out.println(namez.get(timez.get(0))); 
     System.out.println(namez.get(timez.get(1)));   
    } 
} 
0

這可能是最緊湊的方式做到這一點:

import java.util.*; 

public class Main { 

    public static void main(String[] args) { 
     //Create the mapping: 
     TreeMap<Integer, String> timeToNameMapping = new TreeMap<Integer,String>(); 
     timeToNameMapping.put(341, "Alex"); 
     timeToNameMapping.put(273, "Clair"); 
     timeToNameMapping.put(278, "Sarah"); 
     timeToNameMapping.put(329, "Andy"); 
     timeToNameMapping.put(445, "Anna"); 
     timeToNameMapping.put(402, "Bob"); 

     //Get the keys from the above mapping. 
     //Since it is a TreeMap, the keys are sorted 
     List<Integer> times = new ArrayList<>(timeToNameMapping.keySet()); 

     //Print the result 
     System.out.println("First: " + timeToNameMapping.get(times.get(0))); 
     System.out.println("Second: " + timeToNameMapping.get(times.get(1))); 
    } 

} 

輸出:

First: Clair 
Second: Sarah 

說明: 我使用反向映射,因爲這使您能夠對所有鍵進行排序,然後將排序列表的前兩個元素映射到t他在TreeMap中命名(給定一個運行時,上面的TreeMap會告訴你那個時候跑步者的名字)。 TreeMaps已經訂購了,但由於它們在Map中的鍵位於TreeSet我們不能使用索引來獲取兩個第一個元素。這就是爲什麼我將keySet()轉換爲ArrayList(允許索引)。

詳細解釋詞典(地圖): 通常,在使用列表時,您可以使用get()方法獲取特定元素。對於像ArrayList和LinkedList這樣的列表,get()方法接受一個整數(一個索引值)並返回列表中該位置的元素。 地圖有點不同:地圖在密鑰之間建立關聯。在上面的例子中,如果我給地圖鍵341,那麼它會給我值「Alex」。因此,Map上的get()方法需要一個類型爲K的鍵(在本例中爲Integer,但實際上它可以是任何類型的對象)並返回類型V的值(在本例中爲String,但也可以是任何對象)。創建映射時鍵值和值的類型(在本例中爲K,V = Integer,String)。告訴地圖究竟使用什麼類型的概念被稱爲泛型。