E eriwi Medlem sedan dec. 2004 8 inlägg Frågan 18 jan. 2005 07:51 #1 Hej
Har ett stort problem: Jag har en vektorer som i sin tur innehåller en massa vektorer. Som jag vill jämföra om dom innehåller samma siffror och ta bort dom som har det.
tex
Vektorn: Pos1: [0-2-5-9] Pos2:[0-5-8-7] Pos3:[0-5-9-2]
här skulle jag vilja ta bort [0-5-9-2] eftersom den innehåller samma siffror som [0-2-5-9]
Hade en ide att man kunde göra så här men det fungerar inte:
routes är den vektor som innehåller de andra vektorerna
predecssors är "undervektorerna"
if (((node) (routes.elementAt(k))).predecessors.size() == ((node) (routes.elementAt(k+1))).predecessors.size()) {
for (int l=1; k <= (((node) (routes.elementAt(k))).predecessors
.size()); l++) {
if (((node) (routes.elementAt(k))).predecessors
.contains(new Integer(l))
&& (((node) (routes.elementAt(k+1))).predecessors
.contains(new Integer(l)))) {
//ta bort den vektorn son innehåller samma siffror
Är inte så bra på att förklara, men tanken är att jämnföra positionen i den vektor jag står i med med samma position i nästa vektor och se om dom är lika. Gå vidare till nästa etc etc
Kanske någon har en ide //Erik
L Lime Medlem sedan sep. 2001 961 inlägg En Vector som innehåller en jämförbar typ, t.ex. en Integer, går att sortera med Collections.sort(List l). Det är det man bör göra först.
I interfacet List finns en metod som heter containsAll(List l). Denna implementeras av Vector.
Alltså kan du göra såhär: (pseudo)
Vector pos1 = [0-2-5-9]
Vector pos2 = [0-5-8-7]
Vector pos3 = [0-5-9-2]
if(pos1.containsAll(pos2))
remove(pos2)
typ...
Sedan är det (nästan) alltid bättre att använda sig av Iterator om man skall lopa igenom hela Collections (List, Vector o.s.v).