Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 22:40   #1
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
Вопрос нужна консультация по заданию(использование коллекций))

Пытаюсь самостоятельно учить джаву, нашел курс лекций с заданиями, в одном из которых :
Цитата:
Упражнение
Напишите класс Student, предоставляющий информацию об имени студента методом getName() и о его курсе методом getCourse().
Напишите метод printStudents(List students, int course), который получает список студентов и номер курса и печатает в консоль имена тех студентов из списка, которые обучаются на данном курсе. Для обхода списка в этом методе используйте итератор.
Протестируйте ваш метод (для этого предварительно придется создать десяток объектов класса Student и поместить их в список).
не могу понять, как организовать список. Если я правильно понял, список должен содержать 2 поля: имя студента и номер курса. А как это "засунуть" в список? чтобы один индекс связывал два поля(имя и №курса)?, чтоб потом можно было обрабатывать список по номеру курса??
подскажите, в каком направлении двигаться?
NickolayNest вне форума Ответить с цитированием
Старый 19.01.2012, 00:36   #2
_Денис
Пользователь
 
Аватар для _Денис
 
Регистрация: 12.11.2009
Сообщений: 20
Сообщение

вот твой класс
Код:
Student{
  
    private String name;
    private int course;

    public Student(String name, int course){
          
         this.name = name;
         this.course = course;       

    }
 
    public String getNane() {return name;}
    public int getCourse(){return course;}

}
А вот так потом объявляется список:
Код:

List<Student> students = new List<Student>;
Что бы добавить студента:

Код:

students.add(new Student("Den",5));
Тут уже сам решаешь как данные будут попадать в конструктор

Далее Итератор

Код:


Iterator<Student> itr = students.iterator();

while(itr.hasNext()){
      Student tmp = itr.next();
      // какие то действия
}
Я бы изменил мир, но исходников нету
_Денис вне форума Ответить с цитированием
Старый 20.01.2012, 16:36   #3
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию

Большое спасибо, что хоть кто-то отозвался!
Возникли проблемы.При объявлении списка

Код:
List<Student> students = new List<Student>;
выплывает ошибка:
Код:
'(' or '[' expected
и, естественно, переменная students становится неопределенной, на следующую строчку:
Код:
students.add(new Student("Den",5));
netBeans ругается:
Код:
package students does not exist

<identifier> expected

illegal start of type
NickolayNest вне форума Ответить с цитированием
Старый 20.01.2012, 19:02   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
List<Student> students = new List<Student>();
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.01.2012, 01:52   #5
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию

спасибо всем за помощь! Все получилось, все работает! Я доволен!)))
NickolayNest вне форума Ответить с цитированием
Старый 21.01.2012, 16:22   #6
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
Вопрос новые вопросы( по множеству)

Нужно создать метод реализующий объединение двух множеств. Вот первое множество:
Код:
Set<Student> stud2 = new HashSet(){};
        stud2.add(new Student("Serg", 3));
        stud2.add(new Student("Roma", 3));
        stud2.add(new Student("Fil",1));
        stud2.add(new Student("Jora",2));
        stud2.add(new Student("Bob",1));
        stud2.add(new Student("Senya",3));
        Iterator<Student> iter2 = stud2.iterator();
        Student std2 = iter2.next();
вот второе множество с повторяющимися данными:
Код:
Set<Student> stud3 = new HashSet(){};
        stud3.add(new Student("Den",3));
        stud3.add(new Student("Fil",1));
        stud3.add(new Student("Jora",2));
        stud3.add(new Student("Bob",1));
        stud3.add(new Student("Senya",3));
        stud3.add(new Student("Eugen",1));
        Iterator<Student> iter3 = stud3.iterator();
        Student std3 = iter3.next();
вот метод, реализующий объединение:
Код:
public void union(Set set1, Set set2){
        Set<Student> set3 = new HashSet();
        set3.addAll(set1);
        set3.addAll(set2);
        System.out.println("union:");
        Iterator<Student> iter3 = set3.iterator();
        while (iter3.hasNext()){
            Student std = iter3.next();
            System.out.println(std.getName()+" "+std.getCourse()+
                    " "+std.hashCode());
        }
    }
почему-то выводит всех подряд, хотя метод addAll не должен добавлять элемент, если он уже есть в множестве. в результате выполнения кода:
Код:
        std3.union(stud3, stud2);
получается:[CODE]union:
Fil 1 28737396
Roma 3 12677476
Fil 1 33263331
Serg 3 14576877
Senya 3 5442986
Jora 2 6413875
Eugen 1 10891203
Senya 3 827574
Den 3 27744459
Bob 1 24355087
Bob 1 21174459
Jora 2 6927154/CODE] в чем может быть проблема??

Последний раз редактировалось NickolayNest; 21.01.2012 в 16:25.
NickolayNest вне форума Ответить с цитированием
Старый 21.01.2012, 23:41   #7
64Raider
Новичок
Джуниор
 
Регистрация: 21.12.2008
Сообщений: 1
По умолчанию

Потому что у тебя набор составляют не примитивы. Если используешь HashSet для собственного класса, нужно позаботится о реализации собственных методов hashCode и equals в нем.

Код:
@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + course;
	result = prime * result + ((name == null) ? 0 : name.hashCode());
	return result;
}
@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Student other = (Student) obj;
	if (course != other.course)
		return false;
	if (name == null) {
		if (other.name != null)
			return false;
	} else if (!name.equals(other.name))
		return false;
	return true;
}
64Raider вне форума Ответить с цитированием
Старый 21.01.2012, 23:53   #8
Dark_zarich
 
Регистрация: 21.01.2012
Сообщений: 6
По умолчанию

Автор , Я учусь по тому же материалу что и у вас и настоятельно советую вам делать все задания после тем самому ибо они проверяют как вы усвоили материал (если у вас возникают вопросы или ошибки по ходу выполнения задания то есть 3 варианта из-за чего: 1. не усвоили материал , 2. у вас отсутствует логическое мышление или 3. вы не внимательны)и еще данный материал является не более чем пособием для студентов. Если вы хотите стать хорошим программистом на java то лучше найдите книжку по java.

П.С. если обидел извините.
Dark_zarich вне форума Ответить с цитированием
Старый 25.01.2012, 16:02   #9
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию

спасибо за критику! Я пересмотрел своё отношение к учебному процессу. Да, я спешил пройти урок, хотелось побыстрее перейти к новой теме. Однако, внимательно пройдя заново урок, я не нашел в нем ответов на свои вопросы, и дело совсем не в отсутствии логического мышления или невнимательности. просто разработчики задания не обо всем сказали (думаю в целях самообразования студентов) поэтому, считаю, что форум в этом случае - дополнительная помощь.(иначе зачем он нужен).
что касается
Цитата:
данный материал является не более чем пособием для студентов
это как раз и делает это пособие очень полезным. материал подается информативно, сжато и понятно. По личному опыту, чтение книг без практического применения не дает абсолютно никакого результата, кроме потери времени и разочарования. Я сам студент, и читаю из разных источников. пытаюсь найти какую-то удобную и эффективную систему для самообразования. если есть какие-то практические советы, конкретные книги или видео-уроки, пожалуйста предлагайте.В этом и состоит суть конструктивной критики!
NickolayNest вне форума Ответить с цитированием
Старый 19.11.2014, 23:21   #10
Verruckt
 
Регистрация: 03.11.2014
Сообщений: 3
По умолчанию

У меня тоже компилятор ругается на строчку
List<Student> students = new List<Student>();

Cannot instantiate the type List<Student>
Verruckt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование массивов и коллекций. Классы ArrayList, Queue, Stack, Hashtable, SortedList amerlu C# (си шарп) 1 09.10.2011 20:28
Нужна консультация... Aralegi Компьютерное железо 16 10.08.2011 15:46
Нужна консультация! Unamed Работа с сетью в Delphi 4 24.07.2010 13:06
нужна консультация Vogd777 Помощь студентам 2 28.04.2010 09:01
нужна консультация =( ShuraFK Софт 3 27.04.2009 16:43