abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    dnes 17:33 | Nová verze

    Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.

    Ladislav Hagara | Komentářů: 0
    dnes 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 13
    dnes 03:55 | Komunita

    sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | Nasazení Linuxu

    Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | IT novinky

    Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.

    Ladislav Hagara | Komentářů: 1
    včera 04:55 | Nová verze

    Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 1
    včera 00:33 | Komunita

    Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.

    Ladislav Hagara | Komentářů: 32
    5.5. 23:22 | Pozvánky

    Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou

    … více »
    bkralik | Komentářů: 0
    5.5. 22:33 | IT novinky

    Dle plánu dnes končí služba Skype. Uživatelé mohou pokračovat v Microsoft Teams.

    Ladislav Hagara | Komentářů: 1
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 548 hlasů
     Komentářů: 25, poslední dnes 20:12
    Rozcestník

    Platforma Java a hodnoty výčtů v kolekcích

    30.12.2010 18:07 | Přečteno: 1035× | poslední úprava: 31.12.2010 11:35

    Jak vhodně pracovat s hodnotami výčtů v některých typech kolekcí? Tento text nabízí jedno z možných řešení.

    Výčtové typy (anglicky enumerated types, enumerations, enums) používám k velmi rozsáhlé škále činností, nejčastěji k indikaci stavu, typu apod. Dříve, než byly výčtové typy v jazyku Java uvedeny, se používaly především (celo)číselné konstanty, čehož je dokladem např. třída javax.swing.SwingConstants.

    Používání čísel má několik nevýhod. Zaprvé není dáno, že je nutné používat konstanty, takže kdokoli může předávat literály a kompilátor ani nemukne — a pokud někdo změní hodoty konstant, mohou si vývojáři drbat hlavy, kde se stala chyba… Zadruhé je problematická kontrola validity čísla, protože musí (nebo by měla) být řešena při každém předání (aby někdo nepředal např. vyšší číslo atd.).

    Toto všechno výčtové typy řeší. A řeší toho mnohem víc. A proto je tak rád používám. Někdy je také potřebuji umístit do kolekce; nejčastěji je používám jako klíče v mapách.

    Mnoho lidí k tomu používá objekty tříd jako HashMap nebo LinkedHashSet, což je velká škoda, neboť existují i kolekce navržené přímo pro výčtové typy. Moc se o nich neví, a já jsem přesvědčen, že to souvisí s faktem, že v tutoriálu jsou zmíněny spíše méně než více.

    Abych byl konkrétní, jedná se o množinu (implementuje Set) EnumSet a mapu (implementuje Map) EnumMap. Obě kolekce by údajně měly být velmi výkonné (rychlé), dokonce prý „téměř jako pole“. Hlavní ale jsou speciální vlastnosti a funkce zaměřené na výčtové typy.

    Množiny

    Třída EnumSet representuje množinu hodnot výčtového typu (to znamená, že její velikost může být nula až počet hodnot výčtového typu). Dokumentace slibuje velmi pravděpodobný (avšak ne zaručený) vyšší výkon, než poskytuje HashSet. Základní operace by navíc měly pracovat v konstantním čase.

    Třída EnumSet je abstraktní; její instance se vytvářejí pomocí několika továrních metod (neexistují podtřídy). Navíc má třída parametr E extends Enum<E>, který typově omezuje prvky množiny.

    Potřebujete-li, aby byla množina inicializována všemi hodnotami výčtu, použijte metodu allOf (jako argument je nejsnažší předat literál třídy):

    static <E extends Enum<E>> EnumSet<E> allOf(Class<E> type)

    Můžete vytvořit také prázdnou množinu:

    static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> type)

    Možná budete chtít inicializovat určitým rozsahem hodnot. Hodnoty výčtu jsou v takovém pořadí, v jakém byly definovány (což mě obvykle diskvalifikuje, protože já je tvrdohlavě řadím v abecedním pořádku, nikdy ne dle významu). Jedná se o metodu range (přidají se i krajní hodnoty):

    static <E extends Enum<E>> EnumSet<E> range(E firstElement, E lastElement)

    Lze také provést inicializaci určitými hodnotami:

    Nakonec můžeme inicializovat jinými kolekcemi:

    Do kolekce EnumSet nelze přidat hodnotu null. Pokud se o to pokusíte, budete odměněni příslušnou výjimkou.

    Mapy

    Třída EnumMap představuje mapu, v níž jsou klíčem hodnoty výčtu (null nelze použít). Dokumentace opět slibuje vyšší (ale opět nezaručený) výkon než EnumMap.

    Třída EnumMap má dva parametry: K extends Enum<K>, který representuje typ klíčů mapy, a V representující typ hodnot.

    Objekty lze vytvářet pomocí veřejných konstruktorů:

    EnumMap nenabízí žádné zvláštní metody.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    30.12.2010 18:43 kolcon | skóre: 15 | blog: kolcon
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    zlaty perl a jeho hashe nez tohle... ani citelny to neni...
    30.12.2010 18:47 JS
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Ehm, bitove pole? Zase se ukazuje pravdivost toho citatu s Common Lispem, ze k nemu (preslozite) konverguji vsechny jazyky.
    vulgární Nick avatar 30.12.2010 18:55 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Tohle jsem čekal. Není snad článek o programování, kde by lůza nepropagovala své oblíbené hračky. Běžte si někam na gay stránky, tam jsou pro buzeranty zařízení...
    JSEM PRASE A HOVADO.
    vulgární Nick avatar 30.12.2010 18:56 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    (Lůzou samozřejmě míním ty dva ocasy, co komentovali přede mnou.)
    JSEM PRASE A HOVADO.
    ________________ avatar 31.12.2010 02:22 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    To neni lúza, je to len neškodné náboženstvo, ich boh je LISP, ich odpoveď na všetko je LISP, všetky moderné technológie (Java, .NET, XML) podľa nich raz nahradí LISP (to tvrdia už 50 rokov), LISP je ich mantra dokážu ju zopakovať v jednom príspevku aj 50x. Je to len neškodná sekta, pár bláznivých programátorov, ktorí sa predávkovali kofeinom, prípadne nadmerným množstvom marihuany.
    31.12.2010 08:24 JS
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Zajimalo by me, co o Lispu vite. Ono ze je neco moderni bohuzel jeste neznamena, ze je to dobre (a to neplati v IT zdaleka jen o programovani). Dokazu pochopit, proc nekdo muze obhajovat Javu nebo .NET pred Lispem (standardni knihovny, typova kontrola). Ale hajit XML pred s-expressions? Vazne? (Muzete zacit lecit vasi neznalost treba tady.)

    P.S. Odsoudit cizi nazor jako nabozenstvi je dost lacine.
    vulgární Nick avatar 31.12.2010 11:23 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Jedna věc je, co o Lispu víme.

    Druhá věc je, jestli se o něm něco chceme dozvídat pod blogposty o Javě.
    JSEM PRASE A HOVADO.
    vulgární Nick avatar 31.12.2010 11:25 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Ona to není moc dobrá sekta... Vždyť se jim nedaří nábor; mantru omílá pořád těch několik stejných lidí. :)))
    JSEM PRASE A HOVADO.
    31.12.2010 12:59 kolcon | skóre: 15 | blog: kolcon
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    pekne dekuju, z pouzivani takovych "modernich" veci jako .net nebo java jsem vyrostl - pouzivani proprietarnich technologii microsoftu nebo oraclu vidim jako prilis velke riziko pro projekty do budoucna

    a xml je kapitola sama pro sebe - jako pro nektery veci dobry (ukladani databazi do txt souboru, vymena nekterych strukturovanych dat) ale jinak overhype vec
    30.12.2010 19:39 kolcon | skóre: 15 | blog: kolcon
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích

    Pozor - vynos ministra informaci - od teto chvile se zakazuje psat

    do komentaru blogu, tykajicich se programovacich jazyku,

    jakekoliv dojmy nebo srovnani s jinymi jazyky.

     

    Vyjimku maji pouze komentare, podlozene vlastni disertacni praci,

    pripadne ty, schvalene vrchim censorem se sprostym nickem

    30.12.2010 20:06 JS
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Shodou okolnosti, pointa meho prispevku byla, ze jsem skutecne chtel vedet, zda je to interne implementovane jako bitove pole.

    A chtel jsem to vedet prave proto, ze ve svem vlastnim (zatim ne zcela vysnenem) jazyce jsem se bitovych poli (s aplikaci konecnych podmnozin omezeneho mnozstvi prvku) nedokazal zbavit i pres tvrdou snahu maximalne sjednotit slozene typy (a hadam, ze ze stejneho duvodu se toho nedokazal zbavit ani Common Lisp).

    Coz ovsem zmineny troll nemohl pri sve inteligenci zaznamenat.
    vulgární Nick avatar 30.12.2010 20:16 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    1. Váš dotaz byl jen částí příspěvku. Větší část příspěvku se týkala propagace CL. Jestli se neumíte na něco zeptat, aniž byste dělal reklamu na své oblíbené výrobky, raději se ani neptejte.

    2. Vy jste tím, že CL zmiňujete skoro všude, kde se vyskytnete, známý, takže troll jste vy.
    JSEM PRASE A HOVADO.
    30.12.2010 20:40 JS
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    No a, porad lepsi nez vy, mate uz 4 prispevky a zadny z nich k veci.
    vulgární Nick avatar 30.12.2010 20:47 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Všechny moje příspěvky byly reakcí na jiné komentáře. Kdyby otrapové jako vy nepsali pitomosti, já bych na to ani nemohl nereagovat.
    JSEM PRASE A HOVADO.
    30.12.2010 21:37 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Jo, EnumSet je bitové pole.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    30.12.2010 21:39 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    (Resp. jeden long nebo pole longů a pár bitových operací.)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 30.12.2010 22:09 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    To mu ani nemusíte říkat. Rád odkazujete na dokumentaci, odkažte jej tedy na dokumentaci, kde se to jasně píše. Nebo uznáváte, že i mimo dokumentaci mohou existovat hodnotné informace, byť duplikují dokumentaci? Jak to tedy je?
    JSEM PRASE A HOVADO.
    30.12.2010 22:15 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    O předčasné ejakulaci už jste slyšel, že? Tak si najděte ještě předčasnou generalizaci. Jo, a když už v tom budete, najděte si taky smysl pro humor. Snažíte se jako ťapina, ale výsledky chybí.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 30.12.2010 22:18 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    O předčasné ejakulaci jsem slyšel, ale nikdy jsem nepotkal člověka, u koho bych ji předpokládal - tedy až dosud. Jak se cítíte?
    JSEM PRASE A HOVADO.
    30.12.2010 19:13 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Obsah článku shrnutý do jedné věty: Pro výčtové typy existují v javovské standardní knihovně specializované implementace množiny (EnumSet) a mapy (EnuMap), podívejte se do dokumentace. Where's the point?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 30.12.2010 19:21 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    To lze říct o každém textu, který neobsahuje něco zcela nového, nikdy nikde neviděného.

    Přečetl jsem si váš článek o CouchDB. Můžete mi prosím říct, které pasáže popisují něco, co ještě nikdy nebylo popsáno?
    JSEM PRASE A HOVADO.
    30.12.2010 21:38 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    V češtině? Téměř všechny.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 30.12.2010 22:06 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Najednou to omezujete na češtinu... No dobrá, kolik informací je v češtině o použití enumů v kolekcích? Neříkám, že nejsou, ale člověk na ně obvykle přijde jen tehdy, když je hledá (pokud nepočítám jednu knihu o novinkách Javy 5, kde na ně lze přijít i tehdy, když to člověk nehledá).
    JSEM PRASE A HOVADO.
    31.12.2010 00:32 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Jiste. Tento blogpost je pro profi javistu jako jste vy celkem nezajimavy. Od toho je to blogpost. Na druhou stranu clanek o CouchDB byl prinosem pro zacatecniky v dane problematice. Zkuste zhodnotit, co ma pro abc vetsi prinos... Myslim, ze vy byste mel odtahnout na profi java stranky (asi gay dot com podle vas) a mel byste zde prestat otravovat tu amaterskou luzu.
    vulgární Nick avatar 31.12.2010 00:43 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Tento blogpost je pro profi javistu jako jste vy celkem nezajimavy.
    To je lež, mně se ten blogpost líbí a považuji ho za zajímavý.
    Na druhou stranu clanek o CouchDB byl prinosem pro zacatecniky v dane problematice.
    Nevím, školy nemám, ale tento blogpost je sám o sobě (pro Java programmera) poměrně triviální, nicméně ukazuje něco, co je poměrně málo známé. A článek o CouchDB se mi líbí. Nicméně ho považuju za stejně odborný (i když je samozřejmě rozsáhlejší) jako tento blogpost.

    Podle mě jste blázen, nebo reagujete na špatný komentář / špatnou osobu.
    JSEM PRASE A HOVADO.
    31.12.2010 00:54 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Srsly, tenhle blogpost je dobře napsaný, o tom žádná, ale fakt o EnumSetu a EnumMapě tolik lidí neví? To nežeru. Podobně napsaný článek např. o CyclicBarrier nebo CountDownLatch (to je to první, na co jsem si vzpomněl: spousta lidí nezná z java.util.concurrent nic než Atomic* a Concurrent*, a jsou i tací, co neznají ani to) bych považoval za mnohem zajímavější.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 31.12.2010 01:05 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Tak samozřejmě si nedělám čárky, kdo co zná... Jen jsem se i já setkal s neznalostí daného tématu. Ono záleží na tom, co kdo programuje. Kdo dělá jen server side, ten asi nebude moc znát ani nejelementárnější prvky Swingu a naopak (OK, enumy nejsou nic specializovaného, to byl jen příklad).

    Neříkám, že si neumím představit zajímavější články (a ano, java.util.concurrent by mě určitě zajímalo víc). Tady šlo o to, že jste blogpost shazoval jen proto, že se vám asi zdál málo rozsáhlý / málo objevný (možná něco jiného, nevím).
    JSEM PRASE A HOVADO.
    31.12.2010 09:11 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Srsly, tenhle blogpost je dobře napsaný, o tom žádná, ale fakt o EnumSetu a EnumMapě tolik lidí neví?
    To by ses divil, kolik lidí netuší že existuje něco jiného než ArrayList a HashMap :-( Nebo tuší, ale zhruba na stejné úrovni jako že existuje Zanzibar.
    31.12.2010 14:05 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Ani nechci vědět, co takoví lidi používají pro frontu (nejlíp obousměrnou)…

    No nic. Zdá se, že je potřeba lidi vzdělávat i v takhle triviálních věcech. Ach jo.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    vulgární Nick avatar 31.12.2010 17:11 vulgární Nick | blog: Takže já jsem jedinej, kdo čůrá do vany?
    Rozbalit Rozbalit vše Re: Platforma Java a hodnoty výčtů v kolekcích
    Na šíření triviálních informací není nic špatného. Někdo trivialitu nezná ani jako "odborník", ale jsou i lidé, co odborníky (ani "odborníky") zatím nejsou.
    JSEM PRASE A HOVADO.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.