Java API
This lab is for practicing Java -
you have to find descriptions of the following classes and solve a
set of small problems.
java.lang.String
java.lang.StringBuffer/StringBuilder
java.lang.Character
java.lang.Integer (-> Double, ...)
java.lang.Math
java.lang.Comparable
java.util.StringTokenizer
java.util.Calendar
java.util.Random
java.util.ArrayList
java.util.HashMap
java.util.Set
java.util.List
java.util.Collection
java.util.TreeSet
java.util.Arrays
java.util.Iterator
...
Problems
- Convert a given double number (double) into String (String).
- Convert a string (String)
into an integer number (int).
Assume that the string actually represents an integer
(Discover what happens, if the string is illegal?).
- Take the current moment of time from the computers inner
clock and form a string "hours:minutes:seconds" (use 24h
notation, e.g. "13:25:10").
- Find a cosine of a given angle that is expressed in degrees.
- Print a table of square roots for numbers from 0 up to 100
using step 5 (print two numbers per line: argument and its
square root).
- Given a string replace in it all uppercase letters with
corresponding lowercase letters and all lowercase letters with
corresponding uppercase letters. Do not change other symbols ("ABcd12" -> "abCD12"). Use StringBuffer or StringBuilder class
for intermediate result. Create an independent method
String reverseCase (String
s)
for this task.
- Given a string find its reverse ("1234ab" -> "ba4321").
- Given a text (String)
find the number of words in it. Words are separated by any
positive number of any kind of whitespaces (like space, tab,
...). Create an independent method
int countWords
(String t)
for this task.
- Register the current time, pause the program for 3 seconds,
register the current time again and print the difference
between these two moments of time in milliseconds.
- Create a list (ArrayList)
of 100 random integers (Integer)
in between 0 and 999. Print the result. What is the difference
between int and
Integer?
- Find the minimal element of this list. How to find the
minimal element of any List
of Comparable
elements (read about interfaces, also consider that ArrayList implements List and
Integer implements
Comparable)?
- Create a hashtable (HashMap)
containing 5 pairs of strings, where "subject code" serves as
a key and "subject name" serves as a value (e.g. ("I231", "Algorithms and Data
Structures") , just choose any subjects you like).
- Print all the keys of this hashtable (one key per line).
- Remove one of the subjects from the hashtable.
- Print all pairs from this hashtable (each pair on separate
line).
- Reverse the order of elements of the list you have created
before. Write an independent method
to reverse
any list. The method signature is
public static <T extends Object> void
reverseList (List<T> list)
throws UnsupportedOperationException
Output the result and check that
it is correct.
- Write an independent method to find the maximal element of
any Java collection (you can use your list for testing). The
method signature is
static public <T extends Object &
Comparable<? super T>> T maximum (Collection<?
extends T> a)
throws NoSuchElementException
You have to upload your full solution to
Moodle !
Oskused, mis tuleks praktikumide
käigus omandada:
- informatsiooni kiire leidmine API kirjeldusest
- teisendused ühest tüübist teise, mähisklasside kasutamine
- lihtsate arvutuste tegemine
- sõnetöötlus, sõnepuhvri kasutamine
- aega väljendavate andmetega manipuleerimine
- juhuslike andmete genereerimine
- listi ja paisktabeli kasutamine, iteraatorid
Ülesanded:
Koostage peameetod (main),
mis sisaldaks lahendust järgmistele probleemidele:
- Teisendada etteantud reaalarv (double) sõneks (String).
- Teisendada etteantud sõne täisarvuks (eeldusel, et see
sõne väljendab täisarvu).
- Võtta arvuti kellalt jooksev näit ning moodustada sõne
kujul: tunnid:minutid:sekundid (tunnid 24h skaalal).
- Leida kraadides etteantud nurga koosinus.
- Väljastada ruutjuurte tabel arvude 0 kuni 100 jaoks
sammuga 5.
- Vahetada etteantud sõnes suurtähed väiketähtedega ja
vastupidi jättes muud sümbolid muutmata ("ABcd12" -> "abCD12"). Kasutage
vahetulemuste salvestamiseks sõnepuhvrit (StringBuffer).
- Muuta etteantud sõne sümbolite järjekord vastupidiseks
("1234ab" -> "ba4321").
- Leida sõnade arv etteantud sõnes (sõnade eraldajaks
olgu vähemalt üks tühik, tabulatsioonimärk vms).
- Võtta arvuti kellalt jooksev aeg, teha etteantud
pikkusega paus (näiteks 3 sek.), võtta uuesti jooksev aeg ning
arvutada nende kahe ajahetke tegelik vahe millisekundites.
- Genereerida juhuarvudest vahemikus 0 kuni 999 (Integer)
koosnev 100-elemendiline list (ArrayList) ning
väljastada see.
- Leida selle listi vähim element. Proovige kirjutada
eraldi meetod, mis leiaks etteantud List-liidest
rahuldava objekti vähima elemendi eeldusel, et elemendid on
võrreldavad liidese Comparable mõttes (mida Integer
isendid ka on).
- Moodustada paisktabel (HashMap) umbes 5
elemendiga, milles võtmeks on õppeaine kood (String) ja
elemendiks õppeaine nimetus (String). Andmed mõelge ise
välja.
- Väljastada selle paisktabeli kõik võtmed.
- Eemaldada üks ainetest sellest tabelist.
- Väljastada kõik paarid "võti - väärtus" sellest tabelist.
- Muuta esimeses ülesandes genereeritud listi (ArrayList) elementide
järjekord vastupidiseks. Väljastada tulemus ja kontrollida selle
õigsust.
- Koostada maksimumi leidmise meetod (eraldi meetodina), mis
kasutaks liideseid Collection ja Comparable
(s.t. meetodi parameetriks on Collection-objekt, mis sisaldab Comparable-liidest
rahuldavaid elemente, meetodi tagastusväärtuseks on maksimaalne
element Comparable-tüüpi
objektina). Selle meetodi poole pöördumisel võite kasutada
esimeses ülesandes loodud listi.
Programm testida ja esitada
Moodle kaudu.
Jaanus Pöial