Java Set -gränssnittet ger ett kraftfullt verktyg för att lagra samlingar av Java-objekt utan att kopiera information . Sun Microsystems tillhandahåller ingen inbyggd funktion för att jämföra två set för att producera en förteckning över ömsesidigt höll element . Detta är dock funktionalitet lätt att lägga till med några " för-varje " loopar
Du behöver : .
Java 1
5 eller senare .
1 .
Skapa en SetIntersector klass genom att klistra in följande kod i din Java- utvecklingsmiljö eller textredigerare .
import java . util. ArrayList ;
import java. util. HashSet ;
import java. util. Set ;
/**
* Denna klass kommer att hitta skärningspunkten mellan två uppsättningar .
* @ author Kevin Walker
* /
public class SetIntersector {
}
2 .
Lägg till en findIntersection metod för att göra jobbet :
public static ArrayList findIntersection ( Set A, B ) {
ArrayList korsningen=new ArrayList () ;
för ( Object x : a) {
för ( Object Y : b ) {
om ( x. lika ( y )) {
intersection. add (x ) ; }
} }
återvända vägkorsningen;
}
Denna metod kommer att gå igenom båda och jämföra sina delar en i taget . Om de överensstämmer , är elementet läggas till en ArrayList som heter " korsning ", som är tillbaka efter att arbetet är avslutat .
3 .
Lägg till en main-metod för att testa att allt fungerar på samma sätt Det förväntas att fungera:
public static void main ( String [ ] args ) {
Ställ en=ny HashSet () ;
en . lägg (1) ,
a. add (2) ,
a. add (3) ,
serie B=new HashSet () ;
b. add (7) ,
b. add (3) ,
b. add (1) ,
ArrayList korsningen=findIntersection (a, b ) ,
//Detta ska skriva 1 och 3 , eftersom
//dessa är de enda värderingar som är gemensamma
//till varje uppsättning
för . ( Object x : korsning ) {
System. out. println ( x. toString ());
} }
Detta skapar två uppsättningar och fyller dem med olika uppsättningar av siffror . Men siffrorna har viss överlappning : 1 och 3 i båda set. Det kör " findIntersection () " -metoden på dem båda och placerar resultatet i en ny ArrayList heter " korsning . "
Slutligen går det igenom alla objekt i korsningen och skriver ut dem på skärmen .
tips och varningar
Steg 2 använder " för-varje " loop -syntax till i Java 1. 5. Om du använder en tidigare version av Java , måste du skriva en mer gammaldags par "för " loopar använda Iterator klassen . Det är mycket viktigt att din findIntersection klassen jämföra de två värdena med hjälp av " . equals ( ) " istället "==. " Till exempel anser dessa två kommandon : //Detta utvärderas till false om ( new String ( "Hej " ) == "Hello " ) {} //Detta kommer att utvärderas till sant! om ( new String ( "Hej " ) . equals ( "Hej " )) { }