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
|