|
Java HashTable
HashTable is synchronized.
Iterator in the HashMap is fail-safe while the enumerator for the Hashtable isn't.
Hashtable doesn’t allow nulls
Below is a HashTable Example showing how collections are manipulated using a HashTable
Please Note that It must be Compiled in Java 1.4.
// Demonstrates the Hashtable class of the java.util package.
public class HashTableDemo extends JFrame {
public HashTableDemo() {
super(" Hashtable Sourcecode Example");
final JLabel jlbStatus = new JLabel();
final Hashtable hashTable = new Hashtable();
final JTextArea display = new JTextArea(4, 20);
display.setEditable(false);
JPanel jplNorth = new JPanel();
jplNorth.setLayout(new BorderLayout());
JPanel jplNorthSub = new JPanel();
jplNorthSub.add(new JLabel("Name (Key)"));
final JTextField jtfFirstName = new JTextField(8);
jplNorthSub.add(jtfFirstName);
jplNorthSub.add(new JLabel("Phone No"));
final JTextField jtfPhone = new JTextField(8);
jplNorthSub.add(jtfPhone);
jplNorth.add(jplNorthSub, BorderLayout.NORTH);
jplNorth.add(jlbStatus, BorderLayout.SOUTH);
JPanel jplSouth = new JPanel();
jplSouth.setLayout(new GridLayout(2, 5));
JButton jbnAdd = new JButton("Add");
jbnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String strNum = jtfPhone.getText().trim();
String strName = jtfFirstName.getText().trim();
if ((strNum != null && strNum.equals(""))
|| (strName != null && strName.equals(""))) {
JOptionPane.showMessageDialog(HashTableDemo.this,
"Please enter both Name and Phone No");
return;
}
int num = 0;
try {
num = Integer.parseInt(strNum);
} catch (NumberFormatException ne) {
ne.printStackTrace();
}
EmployeeDetails emp = new EmployeeDetails(strName, num);
Object val = hashTable.put(strName, emp);
if (val == null)
jlbStatus.setText("Added: " + emp.toString());
else
jlbStatus.setText("Added: " + emp.toString()
+ "; Replaced: " + val.toString());
}
});
jplSouth.add(jbnAdd);
JButton jbnGet = new JButton("Get");
jbnGet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object val = hashTable.get(jtfFirstName.getText().trim());
if (val != null)
jlbStatus.setText("Get: " + val.toString());
else
jlbStatus.setText("Get: " + jtfFirstName.getText()+
" not in table");
}
});
jplSouth.add(jbnGet);
JButton jbnRemove = new JButton("Remove Name");
jbnRemove.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object val = hashTable.remove(jtfFirstName.getText()
.trim());
if (val != null)
jlbStatus.setText("Remove: " + val.toString());
else
jlbStatus.setText("Remove: " + jtfFirstName.getText()+
" not in table");
}
});
jplSouth.add(jbnRemove);
JButton jbnIsEmpty = new JButton("Empty ?");
jbnIsEmpty.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jlbStatus.setText("Empty: " + hashTable.isEmpty());
}
});
jplSouth.add(jbnIsEmpty);
JButton jbnContains = new JButton("Contains key");
jbnContains.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jlbStatus.setText("Contains key: "+
hashTable.containsKey(jtfFirstName.getText().trim()));
}
});
jplSouth.add(jbnContains);
JButton jbnClear = new JButton("Clear table");
jbnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hashTable.clear();
jlbStatus.setText("HashTable Emptied");
}
});
jplSouth.add(jbnClear);
JButton jbnDisplay = new JButton("List objects");
jbnDisplay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StringBuffer buf = new StringBuffer();
for (Enumeration enum = hashTable.elements();
enum.hasMoreElements();)
buf.append(enum.nextElement()).append('\n');
display.setText(buf.toString());
}
});
jplSouth.add(jbnDisplay);
JButton jbnKeys = new JButton("List keys");
jbnKeys.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StringBuffer buf = new StringBuffer();
for (Enumeration enum = hashTable.keys(); enum.hasMoreElements();)
buf.append(enum.nextElement()).append('\n');
JOptionPane.showMessageDialog(null, buf.toString(),
"Display Keys of HashTable ",JOptionPane.PLAIN_MESSAGE);
}
});
jplSouth.add(jbnKeys);
Container c = getContentPane();
c.add(jplNorth, BorderLayout.NORTH);
c.add(new JScrollPane(display), BorderLayout.CENTER);
c.add(jplSouth, BorderLayout.SOUTH);
setSize(540, 300);
setVisible(true);
}
public static void main(String args[]) {
HashTableDemo hashTableDemo = new HashTableDemo();
hashTableDemo.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class EmployeeDetails {
private String name;
private int phoneNp;
public EmployeeDetails(String fName, int phNo) {
name = fName;
phoneNp = phNo;
}
public String toString() {
return name + " " + phoneNp;
}
}
|
Output

Download HashTableDemo.java
|