Chercher 3 éléments semblables dans une array
Résolu
neocol
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
neocol Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
neocol Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Salut,
J'ai une list d'éléments
Je veux chercher les éléments là où il y a trois ou plus d'éléments semblables consécutives,
par exemple
11112333 ( 4 de 1 consécutifs)
99888776 (3 de 8 consécutifs)
Après je veux supprimer ces éléments de la list myList.
Je vous montre le code que j'ai essayé d'écrire:
A la fin je trouve toujours les éléments :
[99888776, 11522233, 15623585] , Pourtant il n' y a que 15623585 qui doit rester dans la list myList .
SVP, j'ai besoin de votre aide.
merci beaucoup
J'ai une list d'éléments
static List<String> myList = new ArrayList<String>();
myList.add("11112333");
myList.add("99888776");
myList.add("11522233");
myList.add("15623555");
myList.add("15623585");
Je veux chercher les éléments là où il y a trois ou plus d'éléments semblables consécutives,
par exemple
11112333 ( 4 de 1 consécutifs)
99888776 (3 de 8 consécutifs)
Après je veux supprimer ces éléments de la list myList.
Je vous montre le code que j'ai essayé d'écrire:
public class RemoveSomeElements {
static List<String> myList = new ArrayList<String>();
public static void main(String[] args) {
myList.add("11112333");
myList.add("99888776");
myList.add("11522233");
myList.add("15623555");
myList.add("15623585");
ArrayList<String> ListOfDuplicates = new ArrayList<>();
for (int i = 0; i < myList.size(); i++) {
char[] strArray = myList.get(i).toCharArray();
for (int j = 0; j < strArray.length - 2; j++) {
int count = 0;
for (int k = j + 1; k < strArray.length - 1; k++) {
if ((strArray[j] == strArray[k]) && (k != j)) {
count++;
for (int x = k + 1; x < strArray.length; x++) {
if ((strArray[k] == strArray[x]) && (x != k)) {
count++;
if (count >= 3) {
ListOfDuplicates.add(String.valueOf(strArray));
}
}
}
}
}
}
}
myList.removeAll(ListOfDuplicates);
if (myList.size() > 0) {
System.out.println(myList);
} else {
System.out.println("list empty");
}
}
}
A la fin je trouve toujours les éléments :
[99888776, 11522233, 15623585] , Pourtant il n' y a que 15623585 qui doit rester dans la list myList .
SVP, j'ai besoin de votre aide.
merci beaucoup
A voir également:
- Chercher 3 éléments semblables dans une array
- Ai suite 3 - Télécharger - Optimisation
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Picasa 3 - Télécharger - Albums photo
- Diviser une photo en 3 instagram - Guide
- Photorecit 3 - Télécharger - Visionnage & Diaporama
1 réponse
Bonjour,
J'ai réussi à résoudre mon probléme.
En fait, cette question était pour éliminer quelques lignes inutiles d'un fichier.
Je vous laisse le code que j'ai écrit.
J'ai réussi à résoudre mon probléme.
En fait, cette question était pour éliminer quelques lignes inutiles d'un fichier.
Je vous laisse le code que j'ai écrit.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Duplicates {
static ArrayList<Integer> ints = new ArrayList<Integer>();
static List<String> myList = new ArrayList<String>();
static ArrayList<Integer> cleanedList = new ArrayList<Integer>();;
public static void main(String[] args) {
myList.add("11112333");
myList.add("99888776");
myList.add("11522233");
myList.add("15623555");
myList.add("15623589");
for (Iterator<String> it = myList.iterator(); it.hasNext();) {
String s = it.next();
ints.clear();
for (int j = 0; j < s.length(); j++) {
ints.add(Character.getNumericValue(s.charAt(j)));
}
int s1 = ints.size();
System.out.println("ints : " + ints + " size : " + ints.size());
cleanedList = removeNextToAnotherDuplicates(ints);
int s2 = ints.size();
System.out.println("cleanedList : " + cleanedList + " size : " + cleanedList.size());
if ((s1<s2) || (s1>s2)) {
System.out.println("ints changed");
it.remove();
}
}
System.out.println("myList : " + myList);
}
public static ArrayList<Integer> removeNextToAnotherDuplicates(ArrayList<Integer> list) {
for (int i = 0; i < (list.size() - 2); i++) {
boolean continueFlag = true;
for (int j = i + 1; j < (list.size() - 1) && continueFlag;) {
if (list.get(i).intValue() == list.get(j).intValue()) {
for (int x = j + 1; x < list.size() && continueFlag;) {
if (list.get(j).intValue() == list.get(x).intValue()) {
list.remove(x);
break;
} else {
continueFlag = false;
x++;
}
}
} else {
continueFlag = false;
j++;
}
}
}
return list;
}
}
neocol
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
1
Je n'ai pas trouvé comment marquer ma réponse comme résolu.