179 lines
4.8 KiB
Java
179 lines
4.8 KiB
Java
Hashtable class examples
|
|
|
|
// Demonstrates class Hashtable of the java.util package.
|
|
import java.util.*;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import javax.swing.*;
|
|
|
|
public class HashtableTest extends JFrame
|
|
{
|
|
|
|
public HashtableTest()
|
|
{
|
|
super( "Hashtable Example" );
|
|
|
|
final JLabel status = new JLabel();
|
|
final Hashtable table = new Hashtable();
|
|
final JTextArea display = new JTextArea( 4, 20 );
|
|
display.setEditable( false );
|
|
|
|
JPanel northPanel = new JPanel();
|
|
northPanel.setLayout( new BorderLayout() );
|
|
JPanel northSubPanel = new JPanel();
|
|
northSubPanel.add( new JLabel( "First name" ) );
|
|
final JTextField fName = new JTextField( 8 );
|
|
northSubPanel.add( fName );
|
|
|
|
northSubPanel.add( new JLabel( "Last name (key)" ) );
|
|
final JTextField lName = new JTextField( 8 );
|
|
northSubPanel.add( lName );
|
|
northPanel.add( northSubPanel, BorderLayout.NORTH );
|
|
northPanel.add( status, BorderLayout.SOUTH );
|
|
|
|
JPanel southPanel = new JPanel();
|
|
southPanel.setLayout( new GridLayout( 2, 5 ) );
|
|
JButton put = new JButton( "Put" );
|
|
put.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
Employee emp = new Employee( fName.getText(), lName.getText() );
|
|
Object val = table.put( lName.getText(), emp );
|
|
|
|
if ( val == null )
|
|
status.setText( "Put: " + emp.toString() );
|
|
else
|
|
status.setText( "Put: " + emp.toString() + "; Replaced: " + val.toString() );
|
|
}
|
|
} );
|
|
southPanel.add( put );
|
|
|
|
JButton get = new JButton( "Get" );
|
|
get.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
Object val = table.get( lName.getText() );
|
|
|
|
if ( val != null )
|
|
status.setText( "Get: " + val.toString() );
|
|
else
|
|
status.setText( "Get: " + lName.getText() + " not in table" );
|
|
}
|
|
} );
|
|
southPanel.add( get );
|
|
|
|
JButton remove = new JButton( "Remove" );
|
|
remove.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
Object val = table.remove( lName.getText() );
|
|
|
|
if ( val != null )
|
|
status.setText( "Remove: " + val.toString() );
|
|
else
|
|
status.setText( "Remove: " + lName.getText() + " not in table" );
|
|
}
|
|
} );
|
|
southPanel.add( remove );
|
|
|
|
JButton empty = new JButton( "Empty" );
|
|
empty.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
status.setText( "Empty: " + table.isEmpty() );
|
|
}
|
|
} );
|
|
southPanel.add( empty );
|
|
|
|
JButton containsKey = new JButton( "Contains key" );
|
|
containsKey.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
status.setText( "Contains key: " + table.containsKey( lName.getText() ) );
|
|
}
|
|
} );
|
|
southPanel.add( containsKey );
|
|
|
|
JButton clear = new JButton( "Clear table" );
|
|
clear.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
table.clear();
|
|
status.setText( "Clear: Table is now empty" );
|
|
}
|
|
} );
|
|
southPanel.add( clear );
|
|
|
|
JButton listElems = new JButton( "List objects" );
|
|
listElems.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
StringBuffer buf = new StringBuffer();
|
|
for ( Enumeration enum = table.elements(); enum.hasMoreElements(); )
|
|
buf.append( enum.nextElement() ).append( '\n' );
|
|
|
|
display.setText( buf.toString() );
|
|
}
|
|
} );
|
|
southPanel.add( listElems );
|
|
|
|
JButton listKeys = new JButton( "List keys" );
|
|
listKeys.addActionListener( new ActionListener()
|
|
{
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
StringBuffer buf = new StringBuffer();
|
|
|
|
for ( Enumeration enum = table.keys(); enum.hasMoreElements(); )
|
|
buf.append(enum.nextElement() ).append( '\n' );
|
|
|
|
JOptionPane.showMessageDialog( null, buf.toString(), "Display", JOptionPane.PLAIN_MESSAGE );
|
|
}
|
|
} );
|
|
southPanel.add( listKeys );
|
|
Container c = getContentPane();
|
|
c.add( northPanel, BorderLayout.NORTH );
|
|
c.add( new JScrollPane( display ), BorderLayout.CENTER );
|
|
c.add( southPanel, BorderLayout.SOUTH );
|
|
|
|
setSize( 540, 300 );
|
|
show();
|
|
}
|
|
|
|
public static void main( String args[] )
|
|
{
|
|
HashtableTest app = new HashtableTest();
|
|
|
|
app.addWindowListener( new WindowAdapter()
|
|
{
|
|
public void windowClosing( WindowEvent e )
|
|
{
|
|
System.exit( 0 );
|
|
}
|
|
} );
|
|
}
|
|
}
|
|
|
|
class Employee
|
|
{
|
|
private String first, last;
|
|
|
|
public Employee( String fName, String lName )
|
|
{
|
|
first = fName;
|
|
last = lName;
|
|
}
|
|
|
|
public String toString()
|
|
{
|
|
return first + " " + last;
|
|
}
|
|
}
|