Как создать и отобразить список в Java? - PullRequest
0 голосов
/ 04 мая 2010

Мне нужно создать список, скажем, 50 человек (на Java) и отобразить список, и я действительно не знаю, как это сделать. так что это то, что я пытался сделать до сих пор. Пожалуйста, исправьте и заполните часть моего кода.

public class Person {

    String name;
    String stuff;
}


public class CreatePerson {



public static void  ang()  {    

    ArrayList<Person> thing=new ArrayList<Person>(); 
    Scanner diskScanner = new Scanner(in);


    for(int i=0; i<50; i++){

        Person pers = new Person();

          out.print("name: ");
      pers.name=diskScanner.nextLine();

      out.print("stuff: ");
      pers.stuff=diskScanner.nextLine();

      thing.add(pers);

          break;

    }
    // Display people  
    for (int i=0; i<50; i++) {
        out.println(??);{
        }

} }}

Ответы [ 6 ]

7 голосов
/ 04 мая 2010

Вы можете просмотреть список, используя следующую конструкцию:

for (Person person: thing) {
    System.out.println(person.name + " " + person.stuff);
}

Также:

  • Возможно, вы захотите переименовать свой список «лица» вместо «вещь», поскольку он содержит несколько человек.
  • Возможно, вы захотите добавить метод toString () в класс Person, чтобы можно было отображать человека с помощью System.out.println (person).
  • Возможно, вы захотите взять разрыв первого цикла for, чтобы получить все элементы в файле.
1 голос
/ 04 мая 2010
for (Person p : thing) {
   System.out.println(p);
}

Предполагается, что Person имеет разумное значение @Override public String toString() для печати. В противном случае просто получите доступ к членам p по мере необходимости.

Смотри также

0 голосов
/ 04 мая 2010

У меня есть лучшее повышение до вашего класса, чтобы быть лучше. Вы можете преобразовать класс Person в класс JavaBean, добавив методы setName(String name) и setStuff(String stuff) и добавив методы getName() и getStuff() для извлечения значений.

Вы можете определить эти методы как общедоступные, а имена полей и вещи как частные, чтобы защитить данные. Вы можете установить значения как

p.setName(scanner.nextLine());
p.setStuff(scanner.nextLine());

и выведите значения, извлекающие ссылку Person, с p.getName() и p.getStuff() в цикле

Спасибо.

0 голосов
/ 04 мая 2010

Я бы посоветовал заменить tio

ArrayList<Person> thing=new ArrayList<Person>(); 

с

List<Person> thing=new ArrayList<Person>(50);

Это более эффективно, так как вы избегаете возможных перераспределений, указывая длину списка. Это более надежно, поскольку вы используете интерфейс вместо класса (что упрощает переключение реализации, например).

Также подумайте о том, чтобы сделать атрибуты Person личными и использовать для работы с ними методы получения / установки.

0 голосов
/ 04 мая 2010
// put the following in a file named CreatePerson.java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Person {
    String name;
    String stuff;
    @Override public String toString() {
        return "Name: " + name + ", Stuff: " + stuff;
    }
}

public class CreatePerson {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<Person>(50);

        Scanner scanner = new Scanner(System.in);
        for(int i = 1; i <= 50; i++) {
            Person p = new Person();
            System.out.println("Enter person #" + i);
            System.out.print("Name: ");
            p.name = scanner.nextLine();
            System.out.print("Stuff: ");
            p.stuff = scanner.nextLine();

            people.add(p);
        }

        System.out.println("The following people were added:");
        for(Person p : people) {
            System.out.println(p);
        }
    }
}

Скомпилируйте программу, используя: javac CreatePerson.java

Запустите программу, используя: java CreatePerson

0 голосов
/ 04 мая 2010

Выглядит хорошо, чтобы начать.

Я собираюсь просто предложить пару вещей:

1.- Импорт атрибута out из системы:

import static java.lang.System.out;

2.- В цикле for удалите break

...
for(int i=0; i<50; i++){
    Person pers = new Person();
    out.print("name: ");
    pers.name=diskScanner.nextLine();
    out.print("stuff: ");
    pers.stuff=diskScanner.nextLine();
    thing.add(pers);
    break; //<-- Remove this to continue with the remaining 49 persons
}

3.- Наконец, вы можете напечатать значения следующим образом:

// Display people  
for (int i=0; i<50; i++) {
    //out.println(??);{
    //}
    // could be:
    out.println("name: "+ thing.get(i).name +" stuff:"+thing.get(i).stuff );
}
...

редактировать

Варианты печати:

// introduce a variable p 
for (int i=0; i<50; i++) {
    Person p = thing.get(i);
    out.println("name: "+ p.name +" stuff:"+p.stuff );
}

или

// using the size of the array and printf.. 
for (int i=0; i<thig.size(); i++) {
    Person p = thing.get(i);
    out.printf("name: %s stuff: %s %n", p.name ,p.stuff );
}

Или даже лучше (мой любимый)

// using the for-each syntax
for( Person p : thing ) {
      out.printf("name: %s stuff: %s %n", p.name ,p.stuff );
}
...