La recherche dans une liste de tableaux avec des objets personnalisés pour certaines chaînes
J'ai une liste de tableaux avec des objets personnalisés. Je recherche à l'intérieur de cette liste de tableaux de Chaînes de caractères.
La classe pour les objets ressembler à ceci:
public class Datapoint implements Serializable {
private String stateBased;
private String name;
private String priority;
private String mainNumber;
private String groupadress;
private String dptID;
public Datapoint(){
}
public String getMainNumber() {
return mainNumber;
}
public void setMainNumber(String mainNumber) {
this.mainNumber = mainNumber;
}
public String getName() {
return name;
}
..and so on
Je sais comment rechercher une chaîne dans une liste de tableaux, mais comment le faire dans un ArrayList avec mes objets personnalisés:
ArrayList<String> searchList = new ArrayList<String>();
String search = "a";
int searchListLength = searchList.size();
for (int i = 0; i < searchListLength; i++) {
if (searchList.get(i).contains(search)) {
//Do whatever you want here
}
}
Donc je veux avoir une fonction de recherche dans mon ArrayList avec, par exemple, cinq objets pour tous "nom" des chaînes.
Vous devez vous connecter pour publier un commentaire.
Le plus simple est de faire un
for
où vous vérifier si le atrrtibutename
de l'objet personnalisé ont la chaîne souhaitéeJe pense que cela vous aide.
[[[true] [Wippe links oben] [1] [1.001] [Low] [1 ]], [[true] [Wippe rechts] [1] [1.001] [Low] [2 ]], [[true] [Temperaturwert] [7] [7.001] [Low] [256 ]], [[true] [Schalten (Status)] [1] [1.001] [Low] [257 ]]]
String search = "1.001";
d.getMainNumber().contains...
Cela va résoudre le problème, mais n'est pas une belle solution. Sera la modification des attributs dans un avenir?Mise à JOUR: à l'Aide de Java 8 Syntaxe
Si vous n'avez pas l'esprit à l'aide d'un libaray - vous pouvez utiliser Les prédicats de la Google Goyave bibliothèque comme suit:
essayer cette
[[[true] [Wippe links oben] [1] [1.001] [Low] [1 ]], [[true] [Wippe rechts] [1] [1.001] [Low] [2 ]], [[true] [Temperaturwert] [7] [7.001] [Low] [256 ]], [[true] [Schalten (Status)] [1] [1.001] [Low] [257 ]]]
. Si j'utilise par exempleString search = "1.001";
il ne trouve aucune chaine... avez-vous une idée? –Pour une classe personnalisée pour fonctionner correctement dans des collections, vous aurez à mettre en œuvre/remplacer les
equals()
méthodes de la classe. Pour le tri également remplacercompareTo()
.Voir cet article ou google sur la façon de mettre en œuvre ces méthodes correctement.
Probablement quelque chose comme:
contains()
méthode appelle justeequals()
surArrayList
éléments, de sorte que vous pouvez surcharger votre classeequals()
basé sur laname
variable de classe. Retourtrue
deequals()
siname
est égale à la correspondanceString
. Espérons que cette aide.Utilisation
Apache CollectionUtils
: