Collections. Összetett adatstruktúrák

Hasonló dokumentumok
Programozási nyelvek Java

Java és web programozás

Java és web programozás

Programozási technológia

Generikus osztályok, gyűjtemények és algoritmusok

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Tömbök, kollekciók és egyéb alaposztályok

Reader /Writer InputStreamReader, OutputStreamWriter

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Generikus Típusok, Kollekciók

Java tutorial. Object. Nehany alaposztaly, amit ismerni illik. tostring. equals vs. ==

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Java osztálykönyvtár és használata

Generikusok, Collections Framework JAVA PROGRAMOZÁS 5. GYAKORLAT

Magas szintű programozási nyelvek 2 Előadás jegyzet

Programozási nyelvek II.: JAVA

ZH mintapélda. Feladat. Felület

.Net adatstruktúrák. Készítette: Major Péter

Programozási nyelvek Java

Programozási technológia

J2SE 1.5 Tiger. Bevezetés. Metaadatok. Generikus típus. J2SE 1.5 Tiger. Viczián István (viczian.istvan a gmail-en)

OOP: Java 8.Gy: Abstract osztályok, interfészek

Bevezetés a programozásba 2

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Java programozási nyelv

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

JNDI - alapok. Java Naming and Directory Interface

JAVA SE/ME tanfolyam tematika

Programozási nyelvek II.: JAVA

Programozási nyelvek Java

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozási nyelvek Java

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Programozási nyelvek II.: JAVA, 11. gyakorlat

Java VII. Polimorfizmus a Java nyelvben

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Programozás II. labor

Challenge Accepted:C++ Standard Template Library

Újdonságok a Java nyelvben


C# osztályok. Krizsán Zoltán

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VII. Polimorfizmus a Java nyelvben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Algoritmusok és adatszerkezetek II.

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

JAVA PROGRAMOZÁS 3.ELŐADÁS

C#, OOP. Osztályok tervezése C#-ban

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

Komputeralgebra Rendszerek

Fejlett programozási nyelvek C++ Iterátorok

9. MPI

Kalapácsvetés 2016 szöveges

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Programozási nyelvek II.: JAVA, 3. gyakorlat

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozási nyelvek Java

117. AA Megoldó Alfréd AA 117.

Abstract osztályok és interface-ek. 7-dik gyakorlat

C++ Standard Template Library (STL)

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Java Programozás 7. Ea: A java.util csomag. A svájci bicska

Java 5. Ráth István

Java és web programozás

Fejezetek az "Effective Java" c. könyvből

INFORMATIKAI ALAPISMERETEK

Osztálytervezés és implementációs ajánlások

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztálytervezés és implementációs ajánlások

Algoritmusok és adatszerkezetek II.

Elemi adatszerkezetek

TestLine - SCJP sample Minta feladatsor

Java programozási nyelv 6. rész Java a gyakorlatban

JAVA nyelvi alapok. Adatbányászati technikák (VISZM185) Dávid István

Szoftvertechnológia alapjai Java előadások

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Java Programozás 3. Gy: Java GUI. Swing, AWT

Java és web programozás

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# Zero.4 Introducing Visual C# 2.0

Java programozási nyelv 5. rész Osztályok III.

Bánsághi Anna

Apple Swift kurzus 3. gyakorlat

Átírás:

Collections Összetett adatstruktúrák

Collections framework Előregyártott interface-ek és osztályok a leggyakoribb összetett adatszerkezetek megvalósítására Legtöbbször módosítás nélkül használhatók Időt, energiát takaríthatunk meg Tesztelt, minőségi és teljesítmény centrikus implementációk Nem kell különböző adatszerkezet API-kat megtanulni Támogatja a kód újrafelhasználást Package: java.util

Miből áll a keretrendszer Collection Interface-ek Az alap adatszerkezet típusokat definiálják. Ez alkotja a keretrendszer alapját. Általános implementációk A Collection interface-ek elsődleges implementációi (osztályok). Legacy implementációk Korábbi Java verziók adatszerkezet osztályai (Vector and Hashtable) a kompatibilitás miatt. Wrapper implementációk Plusz funkciók (pl. szinkronizáció, módosíthatatlanság) megvalósítása. Absztrakt implementációk részleges implementációk, melyek lehetővé teszik speciális adatszerkezetek kialakítását. Algoritmusok Statikus metódusok alapalgoritmusok megvalósítására, pl. rendezés.

Az alap interface osztályok Collection Ős interface: objektumok csoportját reprezentálja Lehet rendezett vagy rendezetlen csoport Lehet ismétlődéses vagy nem ismétlődő Nincs közvetlen implementációja A Collection leszármaztatott interface osztályai List rendezett, elemek szekvenciája Set a matematikai halmaz modellje SortedSet -

Az alap interface osztályok Map kulcs-érték párok tárolására szolgál. Azonos kulcs nem megengedett. SortedMap mint a Map de az értékeket növekvő kulcs szerint rendezve tárolja (pl. szótár)

Fontosabb Collection metódusok boolean add(object o) boolean addall( Collection c) void clear() boolean contains(object o) boolean containsall( Collection c) boolean isempty() Iterator iterator() boolean remove)object o) boolean removeall(collection c) boolean retainall(collection c) int size() Object[] toarray() Object[] toarray( Object[] a)

Collection interface public interface Collection { // Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional // Array Operations Object[] toarray(); Object[] toarray(object a[]);

Módosítás A módosítás opcionális operátor Nem mindegyik implementáció támogatja UnsupportedOperationException

A List interface public interface List extends Collection { // Positional Access Object get(int index); Object set(int index, Object element); // Optional void add(int index, Object element); // Optional Object remove(int index); // Optional abstract boolean addall(int index, Collection c); // Optional // Search int indexof(object o); int lastindexof(object o); // Iteration ListIterator listiterator(); ListIterator listiterator(int index); // Range-view List sublist(int from, int to);

A Set interface public interface Set { // Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional // Array Operations Object[] toarray(); Object[] toarray(object a[]);

A Map interface public interface Map { // Basic Operations Object put(object key, Object value); Object get(object key); Object remove(object key); boolean containskey(object key); boolean containsvalue(object value); int size(); boolean isempty(); // Bulk Operations void putall(map t); void clear(); // Collection Views public Set keyset(); public Collection values(); public Set entryset(); // Interface for entryset elements public interface Entry { Object getkey(); Object getvalue(); Object setvalue(object value);

Alap implementációs osztályok List ArrayList általános célú LinkedList bizonyos esetekben gyorsabb Set HashSet gyors, nincs sorrend TreeSet sorrend van Map HashMap - gyors, nincs sorrend TreeMap sorrend van

Iterator public boolean hasnext() public Object next() Returns: the next element in the iteration. Throws: NoSuchElementException - iteration has no more elements. public void remove()

Collection Algoritmusok A Collections (!) osztály statikus metódusai Legtöbbjük a List adatszerkezeten működik Rendezés sort Keverés shuffle Adat manipuláció reverse, fill, copy Keresés - binarysearch Extrémumok keresése min, max

Rendezési példa import java.util.*; public class Sort { public static void main(string args[]) { List l = Arrays.asList(args); Collections.sort(l); System.out.println(l);

Sort Két formája van sort(list list) normál sorrend sort(list list, Comparator c) komparátor által meghatározott sorrend Comparator interface int compare(object a, Object b) Returns: neg, 0, pos

Változások az 1.5 verziótól kezdve Új interfészek és osztályok Queue Vector

Cast problémák List myintlist = new LinkedList(); // 1 myintlist.add(new Integer(0)); // 2 Integer x = (Integer) myintlist.iterator().next(); // 3 Or String[] s = (String[])myTextList.toArray(); Nincs fordításkor ellenőrzés!

Generics Hasonló a C++ template-hez Paraméterezhető osztályokat és metódusokat eredményez Általánosabb kód Fordítás közbeni ellenőrzés lehetséges Collection<E> The most commonly used type parameter names are: E - Element (used extensively by the Java Collections Framework) K - Key N - Number T - Type V - Value S,U,V etc. - 2nd, 3rd, 4th types

Példa /** * Generic version of the Box class. */ public class Box<T> { private T t; // T stands for "Type" public void add(t t) { this.t = t; public T get() { return t; Box<Integer> integerbox; integerbox = new Box<Integer>();

Új Collection interface public interface Collection<E> extends Iterable<E> { // Basic operations int size(); boolean contains(object element); boolean add(e element); //optional boolean remove(object element); //optional Iterator<E> iterator(); // Bulk operations boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); //optional boolean retainall(collection<?> c); //optional // Array operations Object[] toarray(); <T> T[] toarray(t[] a);

Módosított interfészek public interface List<E> { void add(e x); Iterator<E> iterator(); public interface Iterator<E> { E next(); boolean hasnext();

List<Integer> myintlist = new LinkedList<Integer>(); // 1 myintlist.add(new Integer(0)); //2 Integer x = myintlist.iterator().next(); // 3