je le code suivant dans lequel je fais une recherche SimpleDB pour obtenir une liste des articles dans mon domaine avec l'attribut « Favorited ». Fondamentalement, j'essaye de mettre à jour la base de données d'utilisateurs pour avoir la quantité la plus récente de fois que chaque article a été "favorisé".Amazon Simple Db obtenir des éléments de la liste
noms d'éléments [] fonctionne parfaitement. Cependant, j'ai de la difficulté à extraire l'attribut. J'arrive à définir Attributs de liste qui finit par être [{Nom: Favori, Nom alternatifEncodage: null, Valeur: 5, AlternateValueEncoding: null,}]. De là cependant, je ne sais pas comment retirer l'attribut de la valeur.
End résultat que je veux favoritedValues [i] = 5
En outre, il est possible que je vais sur ce la façon difficile, est-il un moyen plus facile de le faire?
private void updateFavorites() {
AmazonClientManager clientManager = new AmazonClientManager();
AmazonSimpleDBClient aSDbClient = clientManager.sdb();
String domainName = "domain";
SelectRequest selectRequest2 = new SelectRequest("select Favorited from `" + domainName + "`").withConsistentRead(true);
List values = aSDbClient.select(selectRequest2).getItems();
String[] itemNames = new String[ values.size() ];
String[] favoritedValues = new String[ values.size()];
for (int i = 0; i < values.size(); i++) {
itemNames[ i ] = ((Item)values.get(i)).getName();
List attributes = ((Item)values.get(i)).getAttributes();
favoritedValues[i] = No idea what goes here
}
}
Le guide de développement n'a pas été en mesure de m'aider. Chaque fois que je cherchais des informations via google j'ai eu des informations sur ListViews ce qui n'était pas ce que je cherchais.
Votre solution haut semble être assez inefficace ... surtout si vous avez beaucoup d'attributs et vous essayez seulement de tirer un. Est-ce vraiment le seul moyen? En outre, je ne suis pas familier avec (Attribut anAttribute: currentAttributes) ... pourriez-vous expliquer? – easycheese
Puisque vous avez une liste d'attributs, vous devez la parcourir pour en trouver une. Vous pouvez sortir de la boucle lorsque vous en trouvez un, au cas où. Ce n'est pas inefficace, cependant, la boucle sur une liste est incroyablement rapide, surtout par rapport à la vitesse de SimpleDB. C'est ennuyeux et c'est mieux que vous écriviez une méthode pour faire cela pour vous comme je l'ai fait. En ce qui concerne la boucle, est appelée [boucle foreach] (http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work) qui a été introduit en Java 1.5 en 2004. – stivlo
Je l'ai testé, vous avez raison, cela ne prend pas longtemps (au moins pour une petite base de données). Cela marchera pour moi, merci! – easycheese