2014-11-27 3 views
0

Я полный новичок на Java, и до сих пор все, что я делал, это рисовать фигуры и флаги. Я изо всех сил пытаюсь понять код, который мне дал. Мне нужно получить доступ к значениям, хранящимся в ArrayList, в другом классе. Я не уверен, что я никакого смысла, поэтому здесь находятся два класса Седло и Мандат:Как получить доступ к значениям, хранящимся в ArrayList в Java?

package wtf2; 

import java.util.*;   

public class Seat { 
    public int index; 
    public String place; 
    public int electorate; 
    public String mp; 
    public String party; 
    public String prev; 
    public ArrayList<Mandate> results; 

    public Seat(int index, String place) { 
     this.place = place.trim(); 
     this.index = index; 
     this.results = new ArrayList<Mandate>(); 
    } 

    public void addMandate(Mandate m) { 
     //First candidate is always the MP 
     if (mp == null) { 
      mp = m.candidate; 
      party = m.party; 
     } 
     results.add(m); 
    } 

    public String toString() { 
     return "[" + this.index + "," + this.place + "]"; 
    } 
} 

class Mandate { 
    public String candidate; 
    public String party; 
    public int vote; 

    public Mandate(String candidate, String party, int vote) { 
     this.candidate = candidate; 
     this.party = party; 
     this.vote = vote; 
    } 
} 

Основной класс содержит код, который подает данные из 2-х текстовых файлов в сиденье и мандате. Оттуда мне удалось получить доступ к дате в Seat. Как здесь:

//Who is the MP for "Edinburgh South" 
public static String qA(List<Seat> uk) { 
    for (Seat s : uk) 
     if (s.place.startsWith("Edinburgh South")) 
      return (s.mp); 
    return "Not found"; 
} 

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

+0

Вы должны исправить свой отступ, если вы просите людей прочитать ваш код. – khelwood

+0

Я бы порекомендовал иметь две переменные 'Seat', ссылаясь на« Seat »с самым большим голосованием до сих пор и со вторым по величине голосованием. Итерации через ваш «Список», используя цикл, который начинается с 'for (Seat seat: uk) {' или что-то подобное, и обновляйте эти две переменные, когда вы находите места с большими значениями голосов, чем те, которые уже сохранены. –

+0

Кажется, вы смотрите на цикл '' for-each' (http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html). –

ответ

1

Элемент в ArrayList делает доступ к его индексу. Кажется, вы можете просто отсортировать ArrayList на основе значений vote объектов, находящихся в списке. Для этого вы можете посмотреть здесь: Sort ArrayList of custom Objects by property

Конечно, сортировка, возможно, слишком много для вашей заданной проблемы. Альтернативно,
вы можете просто перебирать список и выбирать два объекта с самыми высокими значениями
votes, как вы идете.

Смежные вопросы