2016-02-12 102 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