tossesMedlem sedan aug. 2003190 inlägg
Hej!
Jag håller på att göra en sökmetod i en class i java.
Classen skapar en array som innehåller referenser till objekt.
ex:
kontruktor för object1
public object1(int antal, String namn, String enamn, antal2)
{
osv.....
}
kontruktor för object2
public object2(int x, int y, String namn)
{
osv.....
}
arr[0] = new object1(12,"namnetTomas","ee",45);
arr[1] = new object1(24,"namnetKalle","u",67);
arr[3] = new object2(1,2,"namnetJonas");
osv....
nu behöver jag söka i arr[0-10] efter t.ex. ett namn i attributet namn.
object1 och object2 innehåller metoden getNamn();
Så om jag skriver arr[0].getNamn() så får jag namnetTomas.
men hur söker jag??
ex:
if(arr[0].getNamn().equals("namnetTomas"))
{
sats.......
}
hmmm funkar inte
eller snarare
for(int i=0;i<index;i++)
{
if(arr*.getNamn().equals("namnetTomas"))
{
sats.......
}
}
Hjälp!
Hoppas någon förstår! Fråga gärna!*
ViktorMedlem sedan aug. 20021 710 inlägg
Eftersom du har två olika klasser som du ska kolla i samma loop så är det bästa att du antingen kör med arv eller interface.
Här är ett interface exempel
public interface IName
{
public String getFName();
public String getLName();
}
public class Obj1 implements IName
{
private String fname=null;
private String lname=null;
public String getFName()
{
return(fname);
}
public String getLName()
{
return(lname);
}
public object1(int antal, String namn, String enamn, antal2)
{
fname=namn;
lname=enamn;
...
}
}
public class Obj2 implements IName
{
private String fname=null;
private String lname=null;
public String getFName()
{
return(fname);
}
public String getLName()
{
return(lname);
}
public obj2(int x, int y, String namn)
{
fname=name;
...
}
}
public class Test
{
public static void main(String argv[])
{
IName[] arr=new IName[10];
arr[0] = new Obj1(12,"namnetTomas","ee",45);
arr[1] = new Obj1(24,"namnetKalle","u",67);
arr[3] = new Obj2(1,2,"namnetJonas");
for(int i=0;i<10;i++)
{
if(arr[i].getFName().equals("namnetTomas"))
System.out.println("Found!");
}
}
}
Alla attribut som du ska kunna söka på och som finns i båda objekten ska också finnas med i ditt interface.
Sen kan man ju också säga att en Array kanske inte är den bästa samlingen men det är en annan fråga. Tror nog att det finns inbyggda sök funktioner i Collection framworket, kolla i APIn :)
/Viktor
tossesMedlem sedan aug. 2003190 inlägg
Hmm jag kanske skulle säga att object1 och object2 extends superobject
Nu fungerar det! Jag hade inte public String getName utan
public void getName()
{
System.out.println(name);
}
Och då kunde jag inte if(arr[0].getName.equals("hh"))
finns det någor sätt att använda .equals om jag hade gjort en void??
ViktorMedlem sedan aug. 20021 710 inlägg
Eftersom du kör en equals på det som retuneras så måste du ratunera en string för att du ska kunna köra en equals :)
När du skriver
getName().equals("Kalle");
skriver du igentligen (ok, inte riktigt, men för att ilustrera problemet :))
String str=getName();
str.equals("Kalle")
Hoppas det hjälper lite...
/Viktor
tossesMedlem sedan aug. 2003190 inlägg
Ok tack så mycket!!!!!!!!!!!!!!!!!!!!!!!!!!! :)