J'ai un arrayList avec des valeurs que {a,b,a,c,d,b,a}
je veux faire une comparaison de chaque élément dans la liste et insérez la pair
de common indexes
dans un List of array
ou quelque chose en utilisant java
exemple de sortie: [[0,2,6], [1,4]] explication: a
est à index 0,2,6
et b
est à des indices 1,4
Jusqu'à présent , j'ai ceci:
HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
List<String> name = new ArrayList<String>();
letter.add("a");
letter.add("b");
letter.add("c");
letter.add("b");
letter.add("a");
for (int i = 0; i < letter.size(); i++) {
for (int j = 1; j < letter.size(); j++) {
if (letters.get(i).equals(letters.get(j)) && i != j) {
hashMap.put(i, j);
}
}
}
System.out.println(hashMap); //o/p: {0=4, 1=3, 3=1}
List<int[]> myList = new ArrayList<int[]>();
Iterator entries = hashMap.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
myList.add(new int[] {key,hashMap.get(key)});
}
System.out.println(myList.toString());
//O/P: [[I@380fb434, [I@668bc3d5, [I@3cda1055]
MISE À JOUR: l'idée était d'obtenir [[0,4], [1,3], [3,1]] comme éléments myList
mais je ne suis pas en mesure d'obtenir cela. Toute aide est très appréciée! Merci!
Basé sur le tableau ci - dessus des indices, je veux comparer les éléments dans un autre List
B
et C
à ces indices - ce qui signifie des éléments à comparer les indices 0,2,6
dans List B and C
et vérifier si les trois éléments sont égaux. Idem pour les éléments à l' index1,4
Vous ne pouvez pas utiliser Map
la façon dont vous avez utilisé pour vérifier tous les index de chaîne. Vous pouvez essayer avec ArrayList
comme ci - dessous,
import java.util.*;
public class ListCharIndexes {
public static void main(String[] args) {
List<String> letter = Arrays.asList("a","b","a","c","d","b","a");
//letter= Arrays.asList("a","b","c","b","a");
List<List<Integer>> result=new ArrayList<>();
Set<String> result1=new HashSet<>();
for (int i = 0; i < letter.size(); i++) {
if(result1.add(letter.get(i))){ //skip String if it is already processed
List<Integer> indexes=indexOfAll(letter.get(i), letter);
if(indexes.size()>1) //add only pairs
result.add(indexes);
}
}
System.out.println(result);
}
static List<Integer> indexOfAll(String obj, List<String> list) {
final List<Integer> indexList = new ArrayList<>();
for (int i = 0; i < list.size(); i++)
if (obj.equals(list.get(i)))
indexList.add(i);
return indexList;
}
}
O / P:
[[0, 2, 6], [1, 5]]