Skip to main content

Collector class in java

Arrays, in java language, has fix size, member must be same type. We must known size of it before create array.

This post is note about some collector classes in package java.util
Vector will use to collect 'instance of class', can vary size, member doesn't need to be same type. Vector use much memory, not suitable to store or transfer over network. So use Vector to store data, after finish change Vector to Enumeration by
Enumeration e = v.elements();

Stack is order oriented data structure i.e. 'pop' and 'push' data from one side of stack. It based on the principle of Last In First Out. Member in stack must be instance of class like vector, data in primitive type need to change to be instance of 'type wrapper class' before pop into it.
example
import java.util.*;
class StackTest1 {
public static void main(String[] args) {
String t[] = {"Hello", "how", "do", "you", "do?"};
Stack s = new Stack();
for (int i = 0; i < t.length; i++)
s.push(t[i]);
while (!s.empty())
System.out.print(s.pop() + " ");
}
}

Hashtable use to store pair (key,value).
Properties extends from Hashtable and more popular. It use to store pair value of String and String.
example below show the usage
import java.util.*;
import java.io.*;
class PropertyTest {
public static void main(String[] args) throws IOException {
Properties p1 = new Properties();
p1.put("500", "John Rambo");
p1.put("123", "Jack Ripper");
p1.put("741", "Bill Gate");
/*use getProperty, getPropertyNames*/
System.out.println(p1.getProperty("123"));
//return default value if no key
System.out.println(p1.getProperty("999", "Bob Dylan"));
Enumeration e = p1.propertyNames();
while (e.hasMoreElements())
System.out.print(e.nextElement()+",");
/*save/get properties with file*/
FileOutputStream fo = new FileOutputStream("tmp");
p1.store(fo, "My Properties File");
fo.close();
FileInputStream fi = new FileInputStream("tmp");
Properties p2 = new Properties();
p2.load(fi);
p2.list(System.out);
}
}

Comments

Popular posts from this blog

Fixing sendmail take a long time to start

I notice that my database box[FC6+Oracle10.2] take along time to startup. Sendmail and sm-client very very slow to start[ about 5 minutes ]. There's something wrong in /etc/hosts file. 'newalises' command take long time to update and finish with error below. [root@ora10g ~]# newaliases WARNING: local host name (ora10g) is not qualified; see cf/README: WHO AM I? /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.55 ora10g [root@ora10g ~]# To fix this, custom hostname[ora10g] need to append to localhost line in /etc/hosts. [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ora10g 192.168.1.55 ora10g [root@ora10g ~]# newaliases /etc/alia

using Class.getResource() load resource file in Eclipse

There are many ways to load resource file in java app. What sun recommended is using Class.getResource(" resource_name ") or Class.getResourceAsStream(" resource_name ") then you will get URL and InputStream respectively. If resource_name is specified without "/", it will be prepend with Class package. So resource file must be in same place[folder structure] as the Class. What I love to do is call getResource() with "/" and put resource file at the root of package. This way i can have separate resource folder. below is in Eclipse, 1. From Package explorer right click src folder->click import 2. In import dialog, Choose General->File System ->next 3. from directory:->Browse to your resource folder. 4. to folder:-> I add "resource" as a folder name under src folder. then click "Finish". In the code, load resource with this.getClass().getResource("/resource/buttons1.png") or this.getClass().getResourceAs

Converting dat to mpeg file, to burn vcd on ubuntu

Creating vcd [from dat file] on WinXP, I use "Nero Burning Rom". It can burn dat file to vcd directly. On ubuntu, AFAIK, No burning cd software to burn dat to vcd. I use k3b but it can't burn dat file. It support only mpeg-1 and mpeg-2 format. Dat file need to convert to mpeg first. Thist post will show how I install and use vcdgear to convert dat file to mpeg file. pnix@pnix-a7n:~/progdl$ wget http://www.vcdgear.com/files/vcdgear176-040415_linux.tar.gz --04:21:14-- http://www.vcdgear.com/files/vcdgear176-040415_linux.tar.gz => `vcdgear176-040415_linux.tar.gz' Resolving www.vcdgear.com... 66.98.192.104 Connecting to www.vcdgear.com|66.98.192.104|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 442,937 (433K) [application/x-tar] 100%[====================================>] 442,937 105.23K/s ETA 00:00 04:21:20 (87.02 KB/s) - `vcdgear176-040415_linux.tar.gz' saved [442937/442937] pnix@pnix-a7n:~/progdl$ tar xzf vcdgear