Как мы должны использовать векторы в Java, как мы использовали их в C ++? - PullRequest
0 голосов
/ 19 марта 2011

Я хотел создать класс GradeBook, затем создать объект для каждого учащегося, сохранить его имя, имя курса и оценку в векторе, а затем в конце распечатать их все. Вот мой код:

public static void main(String [] args)
    {
        Vector<GradeBook> gVec = new Vector<GradeBook>() ;
        Scanner sc = new Scanner (System.in) ;

        String sName = sc.nextLine();
        String cName = sc.next();
        int grade = sc.nextInt() ;
        while(!sName.equals("end"))
        {
            GradeBook st = new GradeBook() ;
            st.setCouseInfo(sName, cName, grade) ;
            gVec.add(st) ;
            sName = sc.nextLine();
            cName = sc.next();
            grade = sc.nextInt() ;
        }
    }

prgoram получает имя, проверяет, является ли он «концом» или нет, затем получает courseName и оценку, устанавливает их в поля GradeBook, которые представляют собой studentName, courseName и courseGrade, затем добавляет их в вектор GradeBook.

Но в конце программы у меня возникла проблема с печатью результатов, это невозможно сделать так, как я это делал в C ++, например:

for ( int i=0;i<gVec.size();i++)
{
System.out.println(gVec[i].studentName);
System.out.println(gVec[i].courseName);
System.out.println(gVec[i].courseGrade);
}

Может кто-нибудь дать мне совет, как использовать векторы в Java? Спасибо!

Ответы [ 2 ]

5 голосов
/ 19 марта 2011

Метод, который вы хотите, это Vector.get(int i).См. здесь для получения более подробной информации.

Однако я бы не использовал Vector.Я бы предпочел ArrayList или LinkedList .Зачем ?Вы платите (небольшое) снижение производительности за синхронизацию Vectors для каждой операции по умолчанию, а шаблон синхронизации ( для каждого метода ) не очень полезен.См. этот ответ для получения более подробной информации.

2 голосов
/ 19 марта 2011

Вы не можете получить доступ к векторным элементам через [], вместо этого следует использовать gVec.get(i) или использовать foreach loop

    for (GradeBook bookItem : gVec){
System.out.println(bookItem.studentName);
System.out.println(bookItem.courseName);
System.out.println(bookItem.courseGrade);
}

Также Vector синхронизируется, если ваша работа вОднониточный взгляд на ArrayList или LinkedList

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