Az ezen a lapon található java források itt érhetők el.
Itt pedig a byte-kódú, azaz a lefordított változat.
java.util
csomag interfészei
java.util.Enumeration
interfész
Írassuk ki a v vektor elemeit!
// VektorKiir.java import java.util.*; class VektorKiir { static Vector v=new Vector(10); public static void main(String argv[]) { for(int i=0;i<5;i++) v.insertElementAt(new Integer(i),i); v.insertElementAt("Szia Világ!",5); v.removeElementAt(2); for(Enumeration e = v.elements();e.hasMoreElements();) { System.out.println(e.nextElement()); } } } |
A fenti program eredménye:
0 1 3 4 Szia Világ! |
java.util.Observer
interfész
Példa: lásd az Observable
osztálynál.
java.util
csomag osztályai
java.util.Observable
osztály
Készítsünk egy Nebantsvirag osztályt, ez lesz a megfigyelt
objektum. Ennek lesz egy változik metódusa, amivel az objektumot
megváltoztatjuk, és ez gondoskodik a megfigyelők értesítéséről is.
Majd írunk megfigyelőket, egy Szamlalo nevűt, ami
megszámolja, hogy hányszor változtattuk meg az objektumot; valamint
egy Spion nevűt, ami a megfigyelt objektum változásakor a konzolra
kiír egy üzenetet, amely tartalmazza a Nebantsvirag által a
NotifyObservers() metódusnak átadott objektumot is.
// VizsgalApp.java import java.util.*; class Szamlalo implements Observer { int változások; public void update(Observable o, Object obj) { változások++; } public int változásokSzáma() { return változások; } } class Spion implements Observer { public void update(Observable o, Object obj) { System.out.println("Ne bántsátok szegényt! Te meg, '" + obj +"', menj vissza!"); } } class Nebantsvirag extends Observable { public void változik(Object o) { setChanged(); notifyObservers(o); } } class VizsgalApp { public static void main(String argv[]) { Nebantsvirag n=new Nebantsvirag(); Szamlalo s=new Szamlalo(); Spion fióka=new Spion(); n.addObserver(s); n.addObserver(fióka); n.változik(new Integer(100)); n.változik("piszka, motoszka"); System.out.println("A Nebántsvirágot " + s.változásokSzáma()+ "-szor változtatták."); } } |
A fenti program eredménye:
Ne bántsátok szegényt!Te meg, '100' menj vissza! Ne bántsátok szegényt!Te meg, 'piszka, motoszka' menj vissza! A Nebántsvirágot 2-szor változtatták. |
java.util.BitSet
osztály
Készítsünk két bitsorozatot, amelyek emberek tulajdonságait írják le:
A kék_a_szemük bitsorozat i -edik eleme
true , ha az i -edik
emberünk kékszemű. Hasonlóan, a barnahajúak bitsorozat az
embereink barnahajúságát fejezi ki. Írassuk ki a kékszeműeket, a
barnahajúakat és azokat, akiknek kék a szeme és barna a haja!
// SzemesHajasok.java import java.util.*; class SzemesHajasok { static BitSet barnahajúak = new BitSet(), kék_a_szemük = new BitSet(9); static void initSets() { for(int i=1;i<5;i++) barnahajúak.set(i); for(int i=3; i<10;i++) kék_a_szemük.set(i); } public static void main(String argv[]) { initSets(); System.out.println("Barnahajúak:"+barnahajúak); System.out.println("Kék a szemük:"+kék_a_szemük); barnahajúak.and(kék_a_szemük); System.out.println("Barnahajúak és kék a szemük:" + barnahajúak); } } |
A fenti program eredménye:
Barnahajúak:{1,2,3,4} Kék a szemük:{3,4,5,6,7,8,9} Barnahajúak és kék a szemük:{3,4} |
Ebben a példaprogramban megpróbálunk minél többet megtudni az
aktuális időről:
// datum.java import java.util.*; class datum { public static void main(String[] args) { // Melyik időzónák is jók nekünk, magyaroknak? (1 óra Greenwich-től) String[] jók=TimeZone.getAvailableIDs(1*60*60*1000); System.out.println("Greenwich-től keletre 1 órányira levő időzónák:"); for(int i=0;i < jók.length;i++) System.out.println(" " + jók[i]); // Vesszük azt, amit hivatalosan használunk: SimpleTimeZone ect = new SimpleTimeZone(1,"ECT"); // Beállítjuk a nyári időszámítás kezdetét április első vasárnapjára, // hajnal 2 órára ect.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000); // ... és a végét október utolsó vasárnapjára, szintén 2 órára. ect.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000); // Ezzel az időzónával kezdünk egy időszámítást: Calendar calendar = new GregorianCalendar(ect); // Az aktuális időpillanatot lekérdezzük Date Most = new Date(); calendar.setTime(Most); System.out.println("Az aktuális idő:"); System.out.print(calendar.get(Calendar.ERA)==0 ? "i.sz. " : "i.e "); System.out.print(calendar.get(Calendar.YEAR) + "."); System.out.print((calendar.get(Calendar.MONTH)+1) + "."); System.out.print(calendar.get(Calendar.DATE) + " "); System.out.print(calendar.get(Calendar.AM_PM)==1?"du ":"de "); System.out.print((calendar.get(Calendar.HOUR)+1) + ":"); System.out.print(calendar.get(Calendar.MINUTE) + ":"); System.out.print(calendar.get(Calendar.SECOND) + " mp. "); System.out.println(calendar.get(Calendar.MILLISECOND) + " ezredmp."); System.out.print("Most az év " + calendar.get(Calendar.WEEK_OF_YEAR) + ". hetében járunk, "); System.out.println("Ez egyébként a(z) "+ calendar.get(Calendar.WEEK_OF_MONTH) + ". ebben a hónapban."); } } |
Locale
-ok
Az alábbi program kilistázza a futtató gépen elérhető
Locale -okat, majd a listából kiválasztott ország adott nyelvén
megjeleníti az aktuális dátumot és időt a lista felett. A listában
elöl az ország neve áll, kerek zárójelben az ország rövidítése, míg
szögletes zárójelben az ország ISO rövidítése áll, ezt követi a nyelv
hasonló leírása.
// LocaleTest.java import java.awt.*; import java.awt.event.*; import java.applet.*; import java.util.*; import java.text.*; public class LocaleTest extends Applet implements ItemListener { private Locale locales[]; boolean isStandalone = false; java.awt.List list = new java.awt.List(); TextField textField = new TextField(); public void init() { list.addItemListener(this); this.setLayout(new BorderLayout()); this.add(list, BorderLayout.CENTER); this.add(textField, BorderLayout.NORTH); locales=DateFormat.getAvailableLocales(); for (int i=0; i < locales.length; i++) { list.add( locales[i].getDisplayCountry()+"("+ locales[i].getCountry()+ ")["+locales[i].getISO3Country()+"] "+ locales[i].getDisplayLanguage()+"("+ locales[i].getLanguage()+ ")["+locales[i].getISO3Language()+"]" ); } } public void itemStateChanged(ItemEvent e) { textField.setText( DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT, locales[list.getSelectedIndex()] ).format(new Date()) ); } } |
A fenti program képe:
ListResourceBundle
használataListResourceBundle
osztály
alkalmazására. (Példánkkal ellentétben a
ListResourceBundle
osztály elsősorban nem String
típusú objektumok
nemzetköziesítésére
szolgál, hiszen ezt a feladatot sokkal
egyszerűbben is meg lehet oldani a PropertyResourceBundle
segítségével. Erre lásd a következő példát.
Ez az alapértelmezett erőforrásosztály:
// MyResource.java import java.util.*; public class MyResource extends ListResourceBundle { public Object[][] getContents() { return contents; } static final Object[][] contents = { // Ezt kell kitölteni {"HelpLabel","Help"}, {"FileMenuLabel","File"} }; } |
Ez pedig a leszármazott, amely magyar nyelvű:
// MyResource_hu_HU.java import java.util.*; public class MyResource_hu_HU extends ListResourceBundle { public Object[][] getContents() { return contents; } static final Object[][] contents = { // Ezt kell kitölteni {"HelpLabel","Súgó"}, {"FileMenuLabel","Fájl"} }; } |
És itt következik a felhasználó (teszt)program:
// myres.java import java.util.*; public class myres { public static void main(String[] args) { Locale Magyar = new Locale("hu","HU"); ResourceBundle myResources = ResourceBundle.getBundle("MyResource", Magyar); System.out.println(myResources.getObject("HelpLabel")); System.out.println(myResources.getObject("FileMenuLabel")); myResources = ResourceBundle.getBundle("MyResource",Locale.getDefault()); System.out.println(myResources.getObject("HelpLabel")); System.out.println(myResources.getObject("FileMenuLabel")); } } |
A fenti program képe:
Súgó Fájl Help File |
PropertyResourceBundle
használataListResourceBundle
helyett a
PropertyResourceBundle
osztályt használja. Ez
utóbbiakat nem programozni, hanem csak konfigurálni kell úgynevezett
properties
fájlokban:
A MyResource.properties nevű fájl tartalma:
# MyResource.properties HelpLabel = Help FileMenuLabel = File # MyResource.properties EOF |
A MyResource_hu_HU.properties nevű fájl tartalma:
# MyResource_hu_HU.properties HelpLabel = Súgó FileMenuLabel = Fájl # MyResource_hu_HU.properties EOF |
A felhasználó (teszt)program és az eredmény megegyezik az előző példában szereplővel.
Random
osztály
StringTokenizer
osztály
Egy nagyon egyszerű alkalmazás:
String s =" public static void main"; StringTokenizer st = new StringTokenizer(s); while (st.hasMoreTokens()) { println(st.nextToken()); } |
A fenti kódrészlet eredménye:
public static void main |