2016-02-12 35 views
0

我是一個java的新手,我在數組和哈希映射中遇到了很大的麻煩。java陣列,陣列列表,hashmaps和使用它們

問題:我從包含兩個ArrayList的Amazon S3服務獲取objectListing。 (ObjectSummaries和commonPrefixes)。

我通過它們循環並將它們添加到列表字符串中。這是我的代碼

try { 
     AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(access_key_id, secret_access_key)); 

     ObjectListing listKey = s3client.listObjects(new ListObjectsRequest().withBucketName(bucket).withPrefix(key).withDelimiter("/")); 
     List<String> keys = new ArrayList<String>(); 
     for(String obj2: listKey.getCommonPrefixes()){ 
      String test=obj2; 
      keys.add(test); 
     } 
     for (S3ObjectSummary obj : listKey.getObjectSummaries()) { 
      keys.add(obj.getKey()); 
     } 
     return keys; 

    } catch (AmazonServiceException x) { 
     String errorCode = x.getErrorCode(); 
     if (!errorCode.equals("NoSuchKey")) { 
      throw x; 
     } 
    } 

這給了我帶有String鍵的列表。但是現在我想要獲得大小和最後修改的objectsummary的關鍵。我應該能夠知道我添加到按鍵的每個對象主鍵的大小和最後修改的大小。

我不知道我應該使用hashmap還是什麼?我不知道該怎麼做。

+0

的可能的複製[如何構建在Java陣列(http://stackoverflow.com/questions/35297177/how-to-structure-the-array-in-java) – radoh

+0

您可以使用hashmap並使用key作爲hashmap key和包含所有要存儲爲數據的數據的數據結構 – Pooya

回答

0

這裏是你如何能做到這一點:

  1. 與所需參數創建一個類

    public class MyObject { 
        private String key; 
        private int size; 
        private Date lastModified; 
    
        public MyObject() {} 
    
        public MyObject(String key, int size, Date lastModified) { 
         this.key = key; 
         this.size = size; 
         this.lastModified = lastModified; 
        } 
    
        /* Getters-Setters*/ 
    } 
    
  2. 創建的MyObject代替String

    List<MyObject> myObj = new ArrayList<MyObject>(); 
    
  3. 列表

    將值添加到列表

    for (S3ObjectSummary obj : listKey.getObjectSummaries()) { 
        myObj.add(new MyObject(obj.getKey(), obj.getSize(), obj.getLastModified())); 
    } 
    
+0

我希望commonPrefixes和ObjectSummaries都在一個ArrayList中,它是String類型。否則,我會遇到其他問題,並需要在代碼的其他部分進行更多的更改。那可能嗎?我怎樣才能做到這一點? – Shaonline

+1

在這種情況下,您可以將其他兩個屬性設置爲'null'。例如,'String test = obj2; myObj.add(new MyObject(obj2,null,null));' – user2004685