Προς το περιεχόμενο

προσπελαση λιστας σε java


manic

Προτεινόμενες αναρτήσεις

Δημοσ.

εχω το εξης προβλημα εχω φτιαξει μια λιστα

 

 

> Myname name = new Myname();
MyLastname lname = new MyLastname();

ArrayList list = new ArrayList();
list.add(name)
list.add(lname)

 

προσπαθω να φτιαξω μια for-each loop για να προσπερασω τα στοιχεια τις και να τα χρησιμοποιησω ως εξης:

 

>for (xxxxxxxxx i : list)
      {System.out.println("show " + i.getLastname() );
      System.out.println("show " + i.getName() );
       }

 

αλλα δεν 3ερω τι να βαλω στην θεση των x...xx υπαρχει καποιος αλλος τροπος να κανω αυτο που θελω ?

Δημοσ.

τι ακριβώς θέλεις να κάνεις ;

γιατί με το παραπάνω δεν καταλαβαίνω και πολύ τι εννοείς..

Δημοσ.

Μάλλον δεν έχεις καταλάβει την έννοια της λίστα σωστά. Για να αποθηκεύσεις αυτά τα δύο που θέλεις και να τα πάρεις πίσω θέλεις κάτι σαν το παρακάτω:

 

>
Myname name = new Myname();
MyLastname lname = new MyLastname();

ArrayList list = new ArrayList();
list.add(name)
list.add(lname)

System.out.println("show " + ((MyLastname)list.get(1)).getLastname());
System.out.println("show " + ((Myname)list.get(0)).getName());

 

Στην λίστα σου μέσα περνάς object, οπότε θα πρέπει να τα κάνεις casting για να παίξουν σωστά οι συναρτήσεις τους.

 

Τώρα για να περάσεις όλα τα στοιχεία μιας λίστας και να τα τυπώσεις θέλεις το παρακάτω

 

>
for (int i=0;i<list.size();i++){
   object listElement = list.get(i);
}

Δημοσ.

καταρχας ευχαριστω πολυ αυτο που ηθελα να κανω ειναι να δημιουργο καποια αντικειμενα απο διαφορες υποκλασεις που εχω

( Myname() / MyLastname()) και αυτα τα αντικειμενα να τα αποθηκευω σε μια λιστα. μεχρι εκει το εχω καταφερει αυτο που δν μπορω να κανω ειναι να φτιαξω μια λουπα με το for ωστε να μπορω να προσπερναω αυτα τα αντικειμενα πχ μεσα στην υποκλαση lastname εχω μια μεθοδο για να βρισκει το μηκος του ονοματος η ιδια ακριβος μεθοδος υπαρχει και στην υποκλαση name, θελω μια for λοιπον που να μπορω να χρησιμοποιω τις μεθοδους για το μηκος του επονυμου και του ονοματος (οι μεθοδοι αυτοι εχουν το ιδιο ονομα) για το καθε αντικοιμενο που εχω δημιουργισει

Δημοσ.

εχω το εξης προβλημα εχω φτιαξει μια λιστα

 

 

> Myname name = new Myname();
MyLastname lname = new MyLastname();

ArrayList list = new ArrayList();
list.add(name)
list.add(lname)

 

προσπαθω να φτιαξω μια for-each loop για να προσπερασω τα στοιχεια τις και να τα χρησιμοποιησω ως εξης:

 

>for (xxxxxxxxx i : list)
      {System.out.println("show " + i.getLastname() );
      System.out.println("show " + i.getName() );
       }

 

αλλα δεν 3ερω τι να βαλω στην θεση των x...xx υπαρχει καποιος αλλος τροπος να κανω αυτο που θελω ?

 

 

το πιο κοντινό σε αυτό που θες είναι κοιτώντας το i.getLastname() και το i.getName() είναι:

 

>

import java.util.ArrayList;

public class Names {
private ArrayList<Person> list;
   class Person{
   	private String name;
   	private String lastName;
   public Person(){
   }
   public Person(String name,String lastName){
   	this.name=name;
   	this.lastName=lastName;
   }
   public void setName(String name){
   	this.name=name;
   }
   public void setLastName(String lastName){
   	this.lastName=lastName;
   }
   public String getName(){
   	return this.name;
   }
   public String getLastName(){
   	return this.lastName;
   }
   }
   public Names() {
   	list=new ArrayList<Person>();
   	list.add(new Person("name1","lastname1"));
   	list.add(new Person("name2","lastname2"));
   	list.add(new Person("name3","lastname3"));
   	list.add(new Person("name4","lastname4"));
   	for (Person i : list){
   		System.out.println("show " + i.getLastName() );
           System.out.println("show " + i.getName() );
           System.out.println();
       }
   }
   
  public static void main(String args[]) {
  	new Names();
  }
}

Δημοσ.

το πιο κοντινό σε αυτό που θες είναι κοιτώντας το i.getLastname() και το i.getName() είναι:

 

>

import java.util.ArrayList;

public class Names {
private ArrayList<Person> list;
   class Person{
   	private String name;
   	private String lastName;
   public Person(){
   }
   public Person(String name,String lastName){
   	this.name=name;
   	this.lastName=lastName;
   }
   public void setName(String name){
   	this.name=name;
   }
   public void setLastName(String lastName){
   	this.lastName=lastName;
   }
   public String getName(){
   	return this.name;
   }
   public String getLastName(){
   	return this.lastName;
   }
   }
   public Names() {
   	list=new ArrayList<Person>();
   	list.add(new Person("name1","lastname1"));
   	list.add(new Person("name2","lastname2"));
   	list.add(new Person("name3","lastname3"));
   	list.add(new Person("name4","lastname4"));
   	for (Person i : list){
   		System.out.println("show " + i.getLastName() );
           System.out.println("show " + i.getName() );
           System.out.println();
       }
   }
   
  public static void main(String args[]) {
  	new Names();
  }
}

 

το προβλημα μου ειναι οτι δεν μπορω να δημιουργησω 1 αντικειμενο person αλλα 2 και γι αυτο δν μπορω να χρησιμοπιησω την

for (Person i : list

Δημοσ.

αυτό σου κάνει?

 

>
import java.util.ArrayList;

public class Names {
private ArrayList<Person> list;
abstract class Person{
}
class MyName extends Person{
	private String name;
public MyName(String name){
       this.name=name;
   }
   public String getName(){
   	return name;
   }
}
class MyLastName extends Person{
	private String lastName;
public MyLastName(String lastName){
       this.lastName=lastName;
   }
   public String getLastName(){
   	return lastName;
   }
}


   public Names() {
       list=new ArrayList<Person>();
       list.add(new MyName("name1"));
       list.add(new MyLastName("surname1"));
       list.add(new MyName("name2"));
       list.add(new MyLastName("surname2"));
       for (Person i : list){
           if (i instanceof MyLastName)
           	System.out.println("show " + ((MyLastName)i).getLastName() );
           else
           	System.out.println("show " + ((MyName)i).getName() );
           System.out.println();
       }
   }
   
  public static void main(String args[]) {
       new Names();
  }
}

Δημοσ.

Αν παίξεις λίγο με τις κληρονομικότητες το instance of και το type casting δε χρειάζονται.

Δοκίμασε το λίγο, Αξίζει τον κόπο.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...