java数组、数组列表、哈希映射及其使用
我是java的新手,在数组和哈希映射方面遇到了很大的麻烦 问题:我从AmazonS3服务中获取ObjectList,该服务包含两个ArrayList。(对象摘要和通用前缀) 我将遍历它们并将它们添加到列表字符串中。这是我的密码java数组、数组列表、哈希映射及其使用,java,arrays,arraylist,Java,Arrays,Arraylist,我是java的新手,在数组和哈希映射方面遇到了很大的麻烦 问题:我从AmazonS3服务中获取ObjectList,该服务包含两个ArrayList。(对象摘要和通用前缀) 我将遍历它们并将它们添加到列表字符串中。这是我的密码 try { AmazonS3 s3client = new AmazonS3Client(new BasicAWSCredentials(access_key_id, secret_access_key)); ObjectList
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;
}
}
试试看{
AmazonS3 s3client=新的AmazonS3客户端(新的基本凭证(访问密钥id、机密访问密钥));
ObjectListing listKey=s3client.listObjects(新ListObjectsRequest().withBucketName(bucket).withPrefix(key).withDelimiter(“/”);
列表键=新的ArrayList();
对于(字符串obj2:listKey.getCommonPrefixes()){
字符串测试=obj2;
键。添加(测试);
}
对于(S3ObjectSummary对象:listKey.getObjectSummaries()){
add(obj.getKey());
}
返回键;
}捕获(AmazonServiceException x){
字符串errorCode=x.getErrorCode();
如果(!errorCode.equals(“NoSuchKey”)){
掷x;
}
}
这将为我提供带有字符串键的列表。但是现在我还想得到objectsummary键的大小和Lastmodified。我应该能够知道我添加到键中的objectsummary的每个键的大小和最后修改
我不知道我应该用hashmap还是什么?我不知道怎么做。以下是您可以做到的:
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*/
}
MyObject
的列表,而不是字符串
List<MyObject> myObj = new ArrayList<MyObject>();
可能的重复项您可以使用hashmap和use key作为hashmap键,以及包含所有要存储为值的数据的数据结构。我希望将commonPrefixes和ObjectSummaries都存储在一个字符串类型的arraylist中。否则,我会遇到其他问题,需要对代码的其他部分进行更多更改。可能吗?我该怎么做?在这种情况下,您可以将其他两个属性设置为
null
。例如,String test=obj2;添加(新的MyObject(obj2,null,null))代码>
for (S3ObjectSummary obj : listKey.getObjectSummaries()) {
myObj.add(new MyObject(obj.getKey(), obj.getSize(), obj.getLastModified()));
}