Java LinkedList обращаясь ко 2-му элементу - PullRequest
0 голосов
/ 15 сентября 2011

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

Это то, что я придумал до сих пор.

public class Bank
{
  private LinkedList<List> words = new LinkedList<List>();
  public void startup()
   {
     words.add(new List("Fred","Cool"));
   }

Это мой список класса

public class List
{
   public List(String name, String lastName)
   {
     this.name = name;
     this.lastName = lastName;
 }

Ответы [ 3 ]

3 голосов
/ 15 сентября 2011

В вашем коде есть ряд проблем:

  1. Я предлагаю переименовать ваш класс List в Person, поскольку объект этого типа явно не представляет списки.

  2. name и lastName не будут элементами списка.Они являются аргументами для конструктора класса List (читай Person).

  3. В вашем List нет полей, поэтому вы не можете сделать

    this.name = name;
    this.lastName = lastName;
    

Чтобы получить доступ ко второму элементу в списке words, вы делаете

words.get(1);   // access second element (indecies are 0-based)

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


Вот полный пример, который поможет вам выбрать правильный путь:

import java.util.LinkedList;

class Bank {
    private LinkedList<Person> persons = new LinkedList<Person>();

    public void startup() {
        persons.add(new Person("Fred", "Cool"));
    }

    public LinkedList<Person> getPersonList() {
        return persons;
    }
}

class Person {
    String name, lastName;

    public Person(String name, String lastName) {
        this.name = name;
        this.lastName = lastName;
    }
}

class Test {
    public static void main(String[] args) {
        Bank bank = new Bank();
        bank.startup();

        String lastNameOfFirstPerson = bank.getPersonList().get(0).lastName;
        System.out.println(lastNameOfFirstPerson); // prints "Cool"
    }
}
0 голосов
/ 15 сентября 2011

Доступ к связанному элементу списка по индексу может быть очень неэффективным.Попробуйте использовать ListIterator<E> LinkedList#listIterator()

0 голосов
/ 15 сентября 2011
words.get(index).lastName;

Предполагается, что поле доступно для доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...