Если вы живете в маленькой и/или развивающейся стране, на пути вашей профессиональной самореализации вы можете столкнуться с ограниченностью местного рынка труда. Вы можете просто не найти работу!
Ограничения местного рынка труда
1 Низкие зарплаты
Даже если вы высококлассный специалист, на местном рынке может просто не оказаться того, кто может платить вам достойную зарплату. Пример: учителя, ученые.
2 Перепроизводство кадров
Количество юристов и экономистов, которые выпускают вузы, в десятки раз превосходит потребность рынка. 90% из них не могут найти работу по специальности. Часто это следствие низкого качества обучения.
3 Спрос на вашу профессию отсутствует
Вы можете быть шикарным ученым, но государство больше не финансирует фундаментальные исследования. На бирже труда вам советуют переквалифицироваться. Не разумно это делать, когда у вас огромный опыт и в мире есть страны, где он востребован.
Когда физик с мировым именем бросает на родине кафедру и едет в Нью-Йорк мыть посуду – это трагедия. Когда физик с мировым именем моет на родине посуду, вместо того, чтобы возглавить кафедру в Нью-Йорке – это еще большая трагедия.
4 Небольшие карьерные перспективы
Вы биржевой брокер и хотите расти как узкий специалист по ценным бумагам. В будущем вы хотите возглавить собственный инвестиционный фонд. В вашей стране спрос на специалистов такого профиля может отсутствовать в принципе.
5 Маленький рынок труда
В стране всего может быть пара компаний, которым интересен специалист вашего профиля и квалификации. Если вы работайте в одной из них, вам могут запретить работать у конкурентов. Вам просто больше некуда устроиться.
Вследствие процессов глобализации, а также развития и удешевления телекоммуникационных технологий появился глобальный рынок труда. Он состоит из компаний, которые хотят (и могут) нанимать себе работников за рубежом. И работников, которые хотят (и могут) устраиваться на работу в иностранную компанию.
Преимущества глобального рынка труда
1 Зарплаты ниже, чем в развитых странах, но выше чем в развивающихся.
Если вы специалист, востребованный на глобальном рынке труда, то разница в доходах на местном и глобальном рынках может достигать 5-10 раз. При этом вы тратите заработанные деньги в своей стране, чем развиваете ее экономику.
2 Опыт. Более совершенные бизнес-процессы
Главное, что дает работа – это опыт, деньги и связи. Если вы привыкли брать только деньги – это ваши проблемы. Вы можете получить ценнейший опыт, если поработайте в ведущих мировых компаниях. Они приветствуют тенденции глобализации, так что это может быть легче, чем кажется. Как сотруднику компании вам будут видны все эффективные и не очень внутренние бизнес-процессы. Надо только держать открытыми глаза и уши.
3 Большие перспективы роста
Работа в большой международной компании поможет вам расти как профессионально, так и строить карьеру. Вы можете обзавестись полезными связями во всем мире, что очень полезно: зарекомендуйте себя отличным специалистом и вам, возможно, несколько международных компаний предложат продолжить у них карьеру. Талантливому человеку нужна только возможность, как ее использовать он додумается сам.
4 Командировки
Вам часто будут предлагать ездить заграницу в командировки. Особенно, если компания имеет несколько международных филиалов. Не стоит этим пренебрегать: это хорошая возможность не только попутешествовать, но и получить новые знания, навыки, поговорить с людьми. Помните, что одна-единственная точка зрения еще никогда не давала качественную объемную картину.
5 Возможность переехать в понравившуюся вам страну
Очень часто, зарекомендовав себя отличным специалистом, можно получить приглашение переехать/поработать в офисе заказчика. Это очень удобно. Вы, скорее всего, уже бывали там, в командировках, и представляете куда едете. Имеете там друзей и знакомых. Сразу получите хорошую работу и коллектив, который вас знает. Да это почти лучшие условия для иммиграции, которые я знаю.
Требования глобального рынка труда
1 Ваша профессия должна подходить для этого
Не все профессии можно перенести на глобальный рынок. Но многие можно. Их список постоянно расширяется. Их можно перечислять и перечислять: телефонная поддержка, разработка, исследования, дизайн, почти все, что касается интернета и/или компьютеров. Если ваша профессия появилась всего 20-30 лет назад, есть очень большая вероятность, что он легко глобализируется.
2 Цена и качество
Когда иностранная компания видит, что может нанять у вас в стране специалиста лучшего уровня и дешевле, чем у себя, зачастую ей трудно устоять. Вы должны быть или «лучше и дешевле» или «гораздо дешевле». Просто «дешевле» ее не устроит, т.к. компания несет дополнительные риски, когда нанимает специалистов удаленно.
3 Английский язык
В 21 веке английский язык - это международный язык. Хотите работать на глобальном рынке труда и пользоваться всеми его преимуществами, но английский не ваш родной – учите международный язык. Чем хуже вы знаете английский язык, тем сильнее должны быть ваши два остальных преимущества.
Получить высшее образование легко - поступил в вуз, 5 лет "проучился" и готово. Благо вузов сейчас как грязи.
Получить профессиональное образование сложнее - сначала надо найти место, где его можно получить, а потом надо много работать. JavaRush - дает отличный старт, чтобы стать профессионалом. Пройдешь JavaRush, устроишься на работу, а дальше будешь получать и опыт и деньги одновременно.
- Привет, Амиго. Сегодня хочу рассказать тебе о коллекциях. Коллекциями/контейнерами в Java принято называть классы, основная цель которых – хранить набор других элементов. Пример такого класса, с которым ты уже знаком, есть – это ArrayList.
- В Java коллекции делятся на три основных группы: Set - множество, List - список, Map - словарь (или карта).
- И в чем же их отличие?
- Начну с Set. Представь много туфель сброшенных в кучу – это Set - множество. В set можно добавить элемент, поискать его или удалить. Но у элементов там нет строго заданного порядка!
- Не густо…
- А теперь представь ту же кучу обуви, но выставленную вдоль стенки. Теперь в ней появился порядок. У каждого элемента есть его номер. И можно просто взять «пару номер 7» по её номеру. Это – List – список. Мы можем добавить элемент в начало списка или в середину, или убрать его, и сделать это просто по его номеру.
- Понятно. А Map?
- Представь ту же обувь, но теперь у каждой пары есть табличка с именем «Коля», «Вася», «Аня». Это Map – мэп, (его еще часто называют «карта» или «словарь»). У каждого элемента есть его уникальное название, по которому к нему можно было обращаться. Уникальное название элемента ещё называют «ключом». А Map – это набор пар «ключ»-«значение». Ключ не обязательно должен быть строкой, он может быть любым типом. Map, у которого тип ключа – Integer, – это фактически List (с некоторыми отличиями).
- На словах понятно, но хотелось бы увидеть больше примеров.
- Примеры тебе даст Риша, а я хочу добавить еще пару слов.
- Все коллекции и контейнеры сразу после создания ничего в себе не хранят. Но в них можно постепенно добавлять элементы – тогда они будут динамически изменять свой размер.
- О, это уже интересно. А как узнать, сколько элементов в коллекции?
- Для этого есть метод size(). В коллекциях есть все необходимое. Думаю, через пару уроков ты сам убедишься, какие эти коллекции удобные.
- Надеюсь.
- Привет, Амиго.
- Здорова, Риша.
- Элли мне сказала, что ты хотел больше примеров коллекций. Сейчас я дам тебе несколько. Хочу представить тебе список коллекций и интерфейсов:
Интерфейс | Класс/Реализация | Описание |
---|---|---|
List | ArrayList | Список |
LinkedList | Список | |
Vector | Вектор | |
Stack | Стек | |
Set | HashSet | Множество |
TreeSet | Множество | |
SortedSet | Отсортированное множество | |
Map | HashMap | Карта/Словарь |
TreeMap | Карта/Словарь | |
SortedMap | Отсортированный словарь | |
Hashtable | Хеш-таблица |
- Хм. Как их много. Четыре List’а, три Set’а и четыре Map’а.
- Да, это все различные реализации интерфейсов List, Set и Map.
- А чем отличаются различные реализации?
- Об этом как раз сегодня мы тебе и расскажем. Просто подожди немного.
- Может, у тебя уже накопились какие-нибудь вопросы?
- Как вывести список на экран я знаю. А как вывести Set и Map?
- У элементов списка (List) есть четко заданный порядок, поэтому их можно вывести просто по номеру. У Set и Map строго заданного порядка элементов нет. Собственно говоря, порядок их элементов может меняться при удалении или добавлении какого-нибудь элемента.
- Надо же.
- Поэтому для работы с элементами коллекций были придуманы специальные объекты – итераторы. С их помощью можно пройтись по всем элементам коллекции, даже если у них нет номера, а только имена (Map), или вообще нет имён – Set.
-Примеры:
Вывод на экран элементов Set | |
---|---|
public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Mama"); set.add("Mila"); set.add("Ramu"); //получение итератора для множества Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) //проверка, есть ли ещё элементы { //получение текущего элемента и переход на следующий String text = iterator.next(); System.out.println(text); } } | |
Вывод на экран элементов List | |
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Mama"); list.add("Mila"); list.add("Ramu"); Iterator<String> iterator = list.iterator();//получение итератора для списка while (iterator.hasNext()) //проверка, есть ли ещё элементы { //получение текущего элемента и переход на следующий String text = iterator.next(); System.out.println(text); } } | |
Вывод на экран элементов Map | |
public static void main(String[] args) { //все элементы хранятся в парах Map<String, String> map = new HashMap<String, String>(); map.put("first", "Mama"); map.put("second", "Mila"); map.put("third", "Ramu"); Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { //получение «пары» элементов Map.Entry<String, String> pair = iterator.next(); String key = pair.getKey(); //ключ String value = pair.getValue(); //значение System.out.println(key + ":" + value); } } |
- Ничего себе! И что все это значит?
- На самом деле все довольно просто. Сначала мы получаем у коллекции специальный объект-iterator. У него есть всего два метода
1 Метод next() возвращает очередной элемент коллекции.
2 Метод hasNext() проверяет, есть ли еще элементы, которые не возвращал next().
- Ага. Похоже ситуация начинает проясняться. Давай я расскажу, как я все это понял.
- Так. Сначала надо вызвать у коллекции метод iterator(), чтобы получить этот волшебный объект-итератор.
- Затем мы в цикле, пока есть еще неполученные элементы, получаем их по одному. Получаем мы очередной элемент коллекции с помощью вызова next(), а проверяем, есть ли еще элементы в итераторе с помощью hasNext(). Все верно?
- Да, примерно все так и есть. Но самое интересное будет сейчас.
- В Java есть сокращённая запись работы с итераторами. По аналогии с while, for был добавлен еще один специальный оператор «for each» - «для каждого». Обозначается тоже ключевым словом for.
- Оператор for-each используется только при работе с коллекциями и контейнерами. В нем неявно используется итератор, но мы видим уже полученный элемент.
- Давая я покажу тебе длинную и сокращенную работу с итератором:
Длинная запись | Сокращенная запись |
---|---|
public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Mama"); set.add("Mila"); set.add("Ramu"); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String text = iterator.next(); System.out.println(text); } } |
public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Mama"); set.add("Mila"); set.add("Ramu"); for (String text : set) { System.out.println(text); } } |
- Обрати внимание: в правой таблице нет ни зелёных, ни красных слов. Фактически 3 строки заменяются на одну:
Длинная запись | Сокращенная запись |
---|---|
Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String text = iterator.next(); |
for (String text : set) |
- Выглядит шикарно. Так мне нравится гораздо больше!
- Давай посмотрим на те же примеры, что и выше, только записанные короче:
Вывод на экран элементов Set | |
---|---|
public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Mama"); set.add("Mila"); set.add("Ramu"); for (String text : set) { System.out.println(text); } } |
|
Вывод на экран элементов List | |
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Mama"); list.add("Mila"); list.add("Ramu"); for (String text : list) { System.out.println(text); } } |
|
Вывод на экран элементов Map | |
public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("first", "Mama"); map.put("second", "Mila"); map.put("third", "Ramu"); for (Map.Entry<String, String> pair : map.entrySet()) { String key = pair.getKey(); //ключ String value = pair.getValue(); //значение System.out.println(key + ":" + value); } } |
- Так это же другое дело!
- Рад, что тебе понравилось.
- Привет, Амиго. Хочу дать тебе несколько задач по коллекциям:
Задачи |
---|
1. HashSet из растений Создать коллекцию HashSet с типом элементов String. Добавить в неё 10 строк: арбуз, банан, вишня, груша, дыня, ежевика, жень-шень, земляника, ирис, картофель. Вывести содержимое коллекции на экран, каждый элемент с новой строки. Посмотреть, как изменился порядок добавленных элементов. |
2. HashMap из 10 пар Создать коллекцию HashMap<String, String>, занести туда 10 пар строк: арбуз – ягода, банан – трава, вишня – ягода, груша – фрукт, дыня – овощ, ежевика – куст, жень-шень – корень, земляника – ягода, ирис – цветок, картофель – клубень. Вывести содержимое коллекции на экран, каждый элемент с новой строки. Пример вывода (тут показана только одна строка): картофель – клубень |
3. Коллекция HashMap из котов Есть класс Cat, с полем имя (name, String). Создать коллекцию HashMap<String, Cat>. Добавить в коллекцию 10 котов, в качестве ключа использовать имя кота. Вывести результат на экран, каждый элемент с новой строки. |
4. Вывести на экран список ключей Есть коллекция HashMap<String, String>, туда занесли 10 различных строк. Вывести на экран список ключей, каждый элемент с новой строки. |
5. Вывести на экран список значений Есть коллекция HashMap<String, String>, туда занесли 10 различных строк. Вывести на экран список значений, каждый элемент с новой строки. |
6. Коллекция HashMap из Object Есть коллекция HashMap<String, Object>, туда занесли 10 различных пар объектов. Вывести содержимое коллекции на экран, каждый элемент с новой строки. Пример вывода (тут показана только одна строка): Sim - 5 |
- Привет, Амиго. Хочу рассказать тебе про интересный тип – Date. С помощью этого типа можно хранить дату и время, а также измерять временные промежутки.
- Уже интересно. Продолжай.
- Каждый объект типа Date хранит внутри себя время. А время хранится в очень интересном виде – количество миллисекунд, которые прошли с 1 января 1970 года, по Гринвичу.
- Ничего себе!
- Ага. Это число настолько большое, что не влезает в int, приходится хранить его в long. Зато очень удобно считать разницу между двумя датами: отнял два числа и уже известна разница с точностью до миллисекунд. И к тому же устраняется проблема смены дат и перевода часов.
- А что самое интересное, каждый объект при создании инициализируется текущем временем. Чтобы узнать текущее время – достаточно просто создать объект.
- А как с ним работать?
- Вот тебе несколько примеров:
Получение текущей даты: | |
---|---|
public static void main(String[] args) throws Exception { Date today = new Date(); System.out.println("Current date: " + today); } | |
Вычисление разницы между двумя датами: | |
public static void main(String[] args) throws Exception { Date currentTime = new Date(); //получаем текущую дату и время Thread.sleep(3000); //ждём 3 секунды – 3000 миллисекунд Date newTime = new Date(); //получаем новое текущее время long msDelay = newTime.getTime() - currentTime.getTime(); //вычисляем разницу System.out.println("Time distance is: " + msDelay + " in ms"); } | |
Наступило ли уже некоторое время: | |
public static void main(String[] args) throws Exception { Date startTime = new Date(); long endTime = startTime.getTime() + 5000; // +5 секунд Date endDate = new Date(endTime); Thread.sleep(3000); // ждем 3 секунды Date currentTime = new Date(); if (currentTime.after(endDate))//проверяем что время currentTime после endDate { System.out.println("End time!"); } } | |
Сколько прошло времени с начала сегодняшнего дня: | |
public static void main(String[] args) throws Exception { Date currentTime = new Date(); int hours = currentTime.getHours(); int mins = currentTime.getMinutes(); int secs = currentTime.getSeconds(); System.out.println("Time from midnight " + hours + ":" + mins + ":" + secs); } | |
Сколько дней прошло с начала года: | |
public static void main(String[] args) throws Exception { Date yearStartTime = new Date(); yearStartTime.setHours(0); yearStartTime.setMinutes(0); yearStartTime.setSeconds(0); yearStartTime.setDate(1); // первое число yearStartTime.setMonth(0); // месяц январь, нумерация для месяцев 0-11 Date currentTime = new Date(); long msTimeDistance = currentTime.getTime() - yearStartTime.getTime(); long msDay = 24 * 60 * 60 * 1000; //сколько миллисекунд в одних сутках int dayCount = (int) (msTimeDistance/msDay); //количество целых дней System.out.println("Days from start of year: " + dayCount); } |
- Метод getTime() возвращает количество миллисекунд, которое хранится в объекте Date.
- Метод after() проверяет, что дата, у которой мы вызвали метод, идет после переданной в метод даты after.
- Методы getHours(), getMinutes(), getSeconds() возвращают количество часов, минут и секунд у объекта, у которого их вызвали.
- Более того, в последнем примере ты видишь, что можно повлиять на дату/время, сохраненное в объекте Date. Мы получаем текущее время и дату, а затем сбрасываем часы, минуты и секунды в 0. Так же устанавливаем месяц в Январь, а день месяца в 1. Теперь объект yearStartTime хранит дату и время 1 января текущего года 0 часов 0 минут 0 секунд.
- Потом мы снова получаем текущую дату currentTime, и вычисляем разницу в миллисекундах между двумя датами. Я про msTimeDistance.
- Затем делим msTimeDistance на количество миллисекунд в сутках и получаем полное количество дней, прошедшее с начала года до сегодняшнего дня!
- Вау! Вот это круто!
- Как насчёт немного размять мозги? Надеюсь, они ещё не закипели.
- В таблице контейнеров и коллекций ты ранее видел, что у одного и того же интерфейса может быть несколько реализаций. Сейчас я расскажу тебе, зачем это нужно. И в чем отличие ArrayList от LinkedList.
- Все дело в том, что коллекции могут быть реализованы разными способами и нет единственного – самого правильного. При одном подходе одни операции являются быстрыми, а остальные медленными, при другом – все наоборот. Нет одного идеального, подходящего всем решения.
- Поэтому было решено сделать несколько реализаций одной и той же коллекции. И каждая реализация была оптимизирована для какого-то узкого набора операций. Так появились разные коллекции. Давай рассмотрим это на примере двух классов – ArrayList и LinkedList.
- ArrayList реализован внутри в виде обычного массива. Поэтому при вставке элемента в середину, приходиться сначала сдвигать на один все элементы после него, а уже затем в освободившееся место вставлять новый элемент. Зато в нем быстро реализованы взятие и изменение элемента – операции get, set, так как в них мы просто обращаемся к соответствующему элементу массива.
- LinkedList реализован внутри по-другому. Он реализован в виде связного списка: набора отдельных элементов, каждый из которых хранит ссылку на следующий и предыдущий элементы. Чтобы вставить элемент в середину такого списка, достаточно поменять ссылки его будущих соседей. А вот чтобы получить элемент с номером 130, нужно пройтись последовательно по всем объектам от 0 до 130. Другими словами операции set и get тут реализованы очень медленно. Посмотри на таблицу:
Описание | Операция | ArrayList | LinkedList |
---|---|---|---|
Взятие элемента | get | Быстро | Медленно |
Присваивание элемента | set | Быстро | Медленно |
Добавление элемента | add | Быстро | Быстро |
Вставка элемента | add(i, value) | Медленно | Быстро |
Удаление элемента | remove | Медленно | Быстро |
- Ага. Кое-что начинает проясняться. А есть какие-нибудь критерии или правила, когда какая коллекция лучше?
- Ну, для простоты, я бы сформулировал такое правило: если ты собираешься вставлять (или удалять) в середину коллекции много элементов, то тебе лучше использовать LinkedList. Во всех остальных случаях – ArrayList.
- Как они устроены мы разберем в старших уровнях, а пока будем учиться ими пользоваться.
- А вот и ты. Я уже начал скучать. Где это ты пропадал? Вот тебе задачи.
- Интересные?
- Ну конечно! Очень интересные:
Очень интересные задачи |
---|
1. Создать два списка LinkedList & ArrayList. Нужно создать два списка – LinkedList и ArrayList. |
2. Провести 10 тысяч вставок, удалений Для arrayList и linkedList провести 10 тысяч вставок, удалений, а также вызовов get и set. |
3. Измерить сколько времени занимает 10 тысяч вставок для каждого списка Измерить, сколько времени занимает 10 тысяч вставок для каждого списка. Метод getTimeMsOfInsert должен вернуть время его исполнения в миллисекундах. |
4. Измерить сколько времени занимает 10 тысяч вызовов get для каждого списка Измерить, сколько времени занимает 10 тысяч вызовов get для каждого списка. Метод getTimeMsOfGet должен вернуть время его исполнения в миллисекундах. |
5. Четыре метода Реализовать 4 метода. Они должны возвращать список, который лучше всего подходит для выполнения данных операций (быстрее всего справится с большим количеством операций). Ничего измерять не нужно. |
- Ты ещё не устал? Тогда продолжим. Хочу поподробнее рассказать тебе, что такое Set и Map. И какие у них есть операции.
- Set – это множество – куча ненумерованных объектов. Главная особенность Set – в нем только уникальные объекты, т.е. они все разные. Вот что с ним можно делать:
Операция | Метод |
---|---|
Добавлять элемент(ы) | add(), addAll() |
Удалять элемент(ы) | remove(), removeAll() |
Проверять, есть ли элемент(ы) | contains(), containsAll() |
- И это все?
- Собственно говоря, да. Ещё можно узнать количество элементов с помощью метода size().- А что насчёт Map?
- Map – это множество пар. То же множество, но не одиноких элементов, а пар: ключ-значение. Единственное ограничение: первый объект в паре, называемый ключом, должен быть уникальным. В Map не может содержаться две пары с одинаковыми ключами.
- Вот что мы можем делать с Map:
Операция | Метод |
---|---|
Получить множество всех пар | entrySet() |
Получить множество всех ключей | keySet() |
Получить множество всех значений | values() |
Добавить пару | put(key, value) |
Получить значение по ключу | get(key) |
Проверить наличие «ключа» | containsKey(key) |
Проверить наличие «значения» | containsValue(value) |
Проверить что Map - пустой | isEmpty() |
Очистить Map | clear() |
Удалить элемент по ключу | remove(key) |
- Вот это гораздо интереснее, чем set.
- Да, Map хоть не так популярен, как список, но используется во многих задачах.
- Ты уже выучил, что такое Set и Map, я надеюсь? Вот тебе немного задач на Set и Map.
Задачи на коллекции |
---|
1. 20 слов на букву «Л» Создать множество строк (Set<String>), занести в него 20 слов на букву «Л». |
2. Удалить все числа больше 10 Создать множество чисел(Set<Integer>), занести туда 20 различных чисел. Удалить из множества все числа больше 10. |
3. Одинаковые имя и фамилия Создать словарь (Map<String, String>) занести в него десять записей по принципу «Фамилия» - «Имя». Проверить сколько людей имеют совпадающие с заданным имя или фамилию. |
4. Удалить всех людей, родившихся летом Создать словарь (Map<String, Date>) и занести в него десять записей по принципу: «фамилия» - «дата рождения». Удалить из словаря всех людей, родившихся летом. |
5. Удалить людей, имеющих одинаковые имена Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» - «имя». Удалить людей, имеющих одинаковые имена. |
- Хо-хо. Наконец-то мы дошли до коллекций. У меня сохранилась “замечательная” лекция с моих студенческих времён. Немного слишком пыльная, конечно, но “отличная” по своей сути. Вот мои заметки:
- О, Господи! Ты опять перетрудился! Говорил же тебе – не работай так много. Давай я поставлю что-нибудь расслабляющее:
- Здорово, боец!
- Здравия желаю, капитан Бобров!
- У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.
Дополнительные задания для выполнения в Intellij Idea |
---|
1. Set из котов 1. Внутри класса Solution создать public static класс кот – Cat. 2. Реализовать метод createCats, он должен создавать множество (Set) котов и добавлять в него три кота. 3. В методе main удалите одного кота из Set cats. 4. Реализовать метод printCats, он должен вывести на экран всех котов, которые остались во множестве. Каждый кот с новой строки. |
2. Множество всех животных 1. Внутри класса Solution создать public static классы Cat, Dog. 2. Реализовать метод createCats, который должен возвращать множество с 4 котами. 3. Реализовать метод createDogs, который должен возвращать множество с 3 собаками. 4. Реализовать метод join, который должен возвращать объединенное множество всех животных - всех котов и собак. 5. Реализовать метод removeCats, который должен удалять из множества pets всех котов, которые есть в множестве cats. 6. Реализовать метод printPets, который должен выводить на экран всех животных, которые в нем есть. Каждое животное с новой строки |
3. Люди с одинаковыми именами и/или фамилиями 1. Создать словарь Map (<String, String>) и добавить туда 10 человек в виде «Фамилия»-«Имя». 2. Пусть среди этих 10 человек есть люди с одинаковыми именами и/или фамилиями. 2. Пусть среди этих 10 человек есть люди с одинаковыми именами. 3. Пусть среди этих 10 человек есть люди с одинаковыми фамилиями. 4. Вывести содержимое Map на экран. |
4. Минимальное из N чисел 1. Ввести с клавиатуры число N. 2. Считать N целых чисел и заполнить ими список - метод getIntegerList. 3. Найти минимальное число среди элементов списка - метод getMinimum. |
5. Мама Мыла Раму. Теперь с большой буквы Написать программу, которая вводит с клавиатуры строку текста. Программа заменяет в тексте первые буквы всех слов на заглавные. Вывести результат на экран. Пример ввода: мама мыла раму. Пример вывода: Мама Мыла Раму. |
6. Вся семья в сборе 1. Создай класс Human с полями имя (String), пол (boolean), возраст (int), дети (ArrayList<Human>). 2. Создай объекты и заполни их так, чтобы получилось: Два дедушки, две бабушки, отец, мать, трое детей. 3. Вывести все объекты Human на экран. |
7. Переставь один модификатор static Переставь один модификатор static, чтобы пример скомпилировался. |
8. Пять наибольших чисел Создать массив на 20 чисел. Заполнить его числами с клавиатуры. Вывести пять наибольших чисел. |
9. Работа с датой 1. Реализовать метод isDateOdd(String date) так, чтобы он возвращал true, если количество дней с начала года - нечетное число, иначе false 2. String date передается в формате MAY 1 2013 Не забудьте учесть первый день года. JANUARY 1 2000 = true JANUARY 2 2020 = false |
- Те задания были для духов. Для дедушек я добавил бонусные задания повышенной сложности. Только для старослужащих.
Бонусные задачи |
---|
1. Номер месяца Программа вводит с клавиатуры имя месяца и выводит его номер на экран в виде: «May is 5 month». Используйте коллекции. |
2. Нужно добавить в программу новую функциональность. Задача: Программа определяет, какая семья (фамилию) живёт в доме с указанным номером. Новая задача: Программа должна работать не с номерами домов, а с городами: Пример ввода: Москва Ивановы Киев Петровы Лондон Абрамовичи Лондон Пример вывода: Абрамовичи |
3. Задача по алгоритмам. Задача: Введи с клавиатуры 20 слов и выведи их в алфавитном порядке. |