Java / Java_LB#6
.docxМинистерство образования и науки Кыргызской Республики
Кыргызский Государственный Технический Университет им И. Раззакова Факультет Информационных Технологий
Кафедра «Информатика и вычислительная техника»
ОТЧЕТ
Лабораторная работа №6
Бишкек 2019
Создайте следующие коллекции. Выполните различные действия с ними.
Коллекция для хранения объектов: Vector
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Создать объект List с использованием объекта ArrayList. Заполнить произвольными числовыми данными, вывести содержимое списка на экран; отсортировать элементы по возрастанию, вывести результат на экран; разупорядочить массив (метод Collection.shuffle()), вывести окончательный вариант на экран.
Задача со скобками. Вводится символьная строка, в которой записано выражение со скобками трех типов: [], {} и (). Определить, верно ли расставлены скобки (не обращая внимания на остальные символы).
Ввести строки, записать их в стек. Вывести строки в обратном порядке.
public static void main(String args[]) {
System.out.println("---------------------------------Task1.1---------------------------------");
Vector vector = new Vector();
vector.add("Weasley");
vector.add("Potter");
vector.add("Greynger");
vector.add("Drago");
vector.add(0,"Snagg");
System.out.println("The vector is: " + vector);
for(int i=0;i<vector.size();i++){
System.out.println("The characters are: " + vector.get(i));
}
System.out.println("Size of Vector: " + vector.size());
System.out.println("Capacity of Vector: " + vector.capacity());
vector.ensureCapacity(40);
System.out.println("Capacity of Vector: " + vector.capacity());
vector.trimToSize();
System.out.println("Capacity of Vector: " + vector.capacity());
vector.setSize(3);
for(int i=0;i<vector.size();i++){
System.out.println("Changed characters: " + vector.get(i));
}
System.out.println("-----------------------Task1.2-------------------");
HashSet<String> hash_set = new HashSet<String>();
// Добавляем элементы в HashSet с помощью метода add()
hash_set.add("India");
hash_set.add("Australia");
hash_set.add("South Africa");
hash_set.add("India");// пытаемся добавить еще один такой же элемент
// Выводим элементы HashSet в консоль
System.out.println("HashSet is: " + hash_set);
System.out.println("List contains India or not: " + hash_set.contains("India"));
// Удаляем элементы из множества с помощью метода remove()
hash_set.remove("Australia");
System.out.println("List after removing Australia: " + hash_set);
System.out.println();
// Проходимся по элементам HashSet с помощью итератора:
System.out.println("Iterating over list:");
Iterator<String> iterator = hash_set.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
Результат:
2
System.out.println("---------------------------Task2-------------------------");
List<Integer> myList = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
myList.add((int) (Math.random() * 100));
}
System.out.println("Filled: " + myList);
Collections.sort(myList);
System.out.println("Sorted: " + myList);
Collections.shuffle(myList);
System.out.println("Shuffled: " + myList);
Результат:
3
//---------------------------------------Task3 method---------------------------------------
private static final char rob = '(';
private static final char rcb = ')';
private static final char sob = '[';
private static final char scb = ']';
private static final char cob = '{';
private static final char ccb = '}';
public static boolean isCorrectBrackets(String value) {
Stack<Character> stack = new Stack<Character>(); // создаем стек, куда будем помещать скобки
char[] array = value.toCharArray(); // разбиваем строку на массив символов
for(char c : array) { // для каждого символа в массиве
if((c == rcb || c == scb || c == ccb) && stack.empty()) { // если символ является закрывающей скобкой И стек пустой
return false; // сразу возвращаем false, т.к. закрывающая скобка не может идти первой
}
if(c == rob || c == sob || c == cob) { // если символ является открывающей скобкой,
stack.push(c); // заталкиваем его в стек
}
if((c == rcb || c == scb || c == ccb) && !stack.empty()) { // если символ является закрывающей скобкой и стек НЕ пустой (т.е там уже находится одна или более открывающих скобок),
char t = stack.peek(); // создаем временную переменную, в которую помещаем символ, находящийся "сверху" в стеке. Этот метоод не удаляет элемент из стека
switch(c) { // оператором выбора определяем символ
case ')': // если это закрывающая круглая скобка
if(t == '(') stack.pop(); // если наверху стека находится открывающая круглая скобка, то удаляем ее из стека. Таким образом, как-бы отбрасываются корректные пары скобок
break;
case ']': // аналогично для других скобок
if(t == '[') stack.pop();
break;
case '}':
if(t == '{') stack.pop();
break;
}
}
}
if(stack.empty()) { // если стек оказался пуст - значит у каждой скобки была своя корректная пара
return true;
} else { // если нет - значит скобки были расставлены неправильно
return false;
}
}
public static void main(String args[]) {
System.out.println("-------------------------Task3----------------------------");
Scanner scan = new Scanner(System.in);
System.out.print("Введите текст: ");
String example = scan.nextLine();
if(isCorrectBrackets(example)) {
System.out.println("Скобки расставлены правильно");
} else {
System.out.println("Скобки расставлены неправильно");
}
scan.close();
}
Результат:
4
System.out.println("-------------------------Task4---------------------------");
Stack<String> stack = new Stack<String>();
System.out.print("Enter text, or done to stop: ");
Scanner scanner = new Scanner(System.in);
String word=null;
while (scanner.hasNextLine()) {
word = scanner.nextLine();
if (word != null) {
word = word.trim();
if (word.equalsIgnoreCase("done")) {
break;
}
stack.push(word);
}else {
break;
}
}
while(!stack.isEmpty()){
System.out.println("Reverse of the text: \"" + stack.pop());
}
scanner.close();
}
}
Результат: