You are on page 1of 9

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ


МАТЕМАТИЧНИЙ ФАКУЛЬТЕТ
КАФЕДРА ПРОГРАМНОЇ ІНЖЕНЕРІЇ

Дисципліна «Мова програмування Java»


Лабораторна робота № 5: “ Рядкові дані і класи для роботи з ними"

Виконав студент гр. 6.1210-2пі


Новіков Олег

Перевірив: Викладач
Горбенко Віталій Івано

Запоріжжя
2022
Завдання 1
Вивчити методи і приклади теоретичної частини лабораторної роботи.
Наведіть приклади, які демонструють, як працюють методи, робіть
скріншоти і давайте пояснення.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {

String aboutCity = "its my new String";


System.out.println(aboutCity);

//Створення масиву рядків

String[] collaborators = {"string1", "string2", "string3"};


System.out.println(Arrays.toString(collaborators));

//рядок из масиву символів

char[] chars = { 'm','y',' ','s','t','r','i','n','g','


','f','r','o','m',' ','c','h','a','r',' ','a','r','r','a','y'};
String str = new String(chars);
System.out.println(str);

//конкатенация

String first = "Конка";


String second = "тенация";
String full = first + " " + second;
System.out.println(full);

//додавання числа в рядок

int num = 10;


String s = " = ten";
String num_s = num + s;
System.out.println(num_s);

//bytes work

byte[] str_byte;
char[] chars1 = {'s','t','u','d','e','n','t'};
String HW = "Hello";
str_byte = HW.getBytes();
System.out.println("Hello - "+HW.length());

for(int i=0;i<HW.length();i++){
System.out.println("byte["+i+"]="+str_byte[i]);
}

String a = new String(chars1,0,7);


System.out.println(">> "+a);
str_byte = a.getBytes();
System.out.println("student - "+a.length());

for(int i=0;i<a.length();i++){
System.out.println("byte["+i+"]="+str_byte[i]);
}

//format out

System.out.println("Форматированый вывод");
String strBarsik = "Барсик";
String strPaws = "четыре";
String strTail = "один";

int year = 5;
String strCat = "У кота по имени %1$s %2$s лапы, %3$s хвост. Ему %4$s
лет.";
String strFinal = String.format(strCat, strBarsik, strPaws, strTail,
year);
System.out.println(strFinal);
strBarsik = "Васька";
year = 6;
strFinal = String.format(strCat, strBarsik, strPaws, strTail, year);
System.out.println(strFinal);
}
}
Дослідити ефективність методів об'єднання (останній приклад теоретична
частина) на 10 значень довжин рядків в межах від 10000 до 100000 символів.
Побудувати графік залежностей під час виконання об'єднання випадкових
символів у рядку від його довжини.

Трохи змінимо код, щоб він міг вимірювати час роботи кожного метода:
import java.util.Scanner;

public class Main {


public static void main(String[] args) {
long t1, t2;
int numsimb;
String Key;

// Test simple String concatenation


System.out.println("Testing simple String concatenation:");
for (int i = 10000; i <= 100000; i += 10000) {
numsimb = i;
Key = "";
t1 = System.currentTimeMillis();
for (int j = 0; j < numsimb; j++) {
Key += (char) ((int) (Math.random() * 255));
}
t2 = System.currentTimeMillis();
System.out.println("Time for " + numsimb + " characters: " + (double)
(t2 - t1) / 1000 + " s");
}

// Test StringBuilder concatenation


System.out.println("\nTesting StringBuilder concatenation:");
for (int i = 10000; i <= 100000; i += 10000) {
numsimb = i;
StringBuilder Key2 = new StringBuilder("");
t1 = System.currentTimeMillis();
for (int j = 0; j < numsimb; j++) {
Key2.append((char) ((int) (Math.random() * 255)));
}
t2 = System.currentTimeMillis();
System.out.println("Time for " + numsimb + " characters: " + (double)
(t2 - t1) / 1000 + " s");
}

// Test StringBuffer concatenation


System.out.println("\nTesting StringBuffer concatenation:");
for (int i = 10000; i <= 100000; i += 10000) {
numsimb = i;
StringBuffer Key3 = new StringBuffer("");
t1 = System.currentTimeMillis();
for (int j = 0; j < numsimb; j++) {
Key3.append((char) ((int) (Math.random() * 255)));
}
t2 = System.currentTimeMillis();
System.out.println("Time for " + numsimb + " characters: " + (double)
(t2 - t1) / 1000 + " s");
}
}
}
Скріншот
Графік до першого:

Графік для другого:

Графік для третього:


1. Розробити методи, що дозволяють сортувати масив об'єктів класів String,
StringBuffer, StringBuilder. Принести приклади їх роботи і відповідні
скріншоти
Код String:
import java.util.Arrays;

public class Main {


public static void main(String[] args) {
String[] words = {"cherry", "apple", "blueberry"};
Arrays.sort(words);
System.out.println(Arrays.toString(words)); // [apple, blueberry, cherry]
}
}

Код StringBuilder:
Реализуем свой компаратор, чтоб использовать Arrays.sort().
import java.util.Comparator;

public class StringBuilderComparator implements Comparator<StringBuilder> {


@Override
public int compare(StringBuilder sb1, StringBuilder sb2) {
return sb1.toString().compareTo(sb2.toString());
}
}

Затем вызвать метод Arrays.sort() с этим компаратором:


StringBuilder[] array = {"cherry", "apple", "blueberry"};
Arrays.sort(array, new StringBuilderComparator());

Код StringBuffer:
Проделаем то же самое:
import java.util.Comparator;

public class StringBufferComparator implements Comparator<StringBuffer> {


@Override
public int compare(StringBuffer sb1, StringBuffer sb2) {
return sb1.toString().compareTo(sb2.toString());
}
}

StringBuffer[] array = {"cherry", "apple", "blueberry"};


Arrays.sort(array, new StringBufferComparator());

You might also like