Results 1 to 3 of 3
  1. #1
    mayhewj7 is offline Member
    Join Date
    Dec 2008
    Posts
    39
    Rep Power
    0

    Default Associative Arrays

    Does anyone have any examples of an associative array? I have one that I am working on but im getting nowhere fast with it. Could anyone tell me how to go about doing this? thanks.




    import java.util.*;

    public class AssociativeArray {

    /**
    * Private instance of the array count
    */
    private int count;

    /**
    * Private instance of the default size of the associative array
    */
    private int DEFAULT;

    /**
    *Private instance of the integer of an empty array.
    */
    final int NOT_FOUND = -1;

    /**
    * Private instance array of cells
    * i.e. key is the string that acts as an index, data is the data (duh)
    */
    private Cell[] collect;


    /
    public AssociativeArray(){
    count = 0;
    collect = (Cell[])(new Cell[DEFAULT]);
    }

    private class Cell{


    Object key;
    Object data;

    private Cell(Object key, Object data) {

    }

    public Object getKey(){
    return key;
    }

    public void setKey(Object _key){
    key = _key;
    }

    public Object getData(){
    return data;
    }

    public void setData(Object _data){
    data = _data;
    }

    }



    public void clear(){

    }

    public Object get(Object key){
    boolean found = false;

    for(int i = 0; i < count; i++){
    if(collect[i].getKey().equals(key)){
    found = true;
    return collect[i].getData();
    }
    }
    if(found == false){
    System.out.println("You entered an invalid key");
    }

    return key;

    }


    private void expandCapacity(){
    Cell[] larger = (new Cell[collect.length*2]);

    for(int index=0; index < collect.length; index++){
    larger[index] = collect[index];
    }
    collect = larger;

    }



    boolean contains(Object key){

    int search = 0;

    for(int i = 0; i < count; i++){
    if(key.equals(collect[i].getKey())){
    search = i;
    }
    }

    return (search != NOT_FOUND);
    }

    boolean isEmpty(){
    return (count == 0);
    }

    public void put(Object _key, Object _data){
    for(int i = 0; i < count; i++){
    if(size() == collect.length){
    expandCapacity();
    }
    if(!(contains(_key))){
    collect[count] = new Cell(_key, _data);
    count++;
    }

    else if(contains(_key)){
    for(int j = 0; j < count; j++){
    collect[j].setData(_data);
    collect[count] = new Cell(_key, _data);
    count++;
    }
    }
    }

    }

    void remove(Object _key){

    int search = NOT_FOUND;
    //If it's empty, we're going to throw a NullPointerException
    if(isEmpty()){
    throw new NullPointerException();
    }
    //Searching for the key
    for(int index=0; index < count && search == NOT_FOUND; index++){
    if(collect[index].getKey() == _key){
    search = index;
    }

    }
    //It's not found, screw it!
    if(search == NOT_FOUND){
    System.out.println("There is no such key. Try again.");
    }

    //Otherwise, delete it!
    else{

    collect[search] = collect[count-1];
    collect[count-1] = null;
    count--;
    }




    }
    //Correct
    int size(){
    return count;
    }

    //Later
    public String toString(){
    String info = "";
    for(int i = 0; i < count; i++){
    info = info + collect[i] + "\n";
    }
    return info;
    }



    The testing main method


    public class Tester {

    public static void main(String args[]){
    AssociativeArray a = new AssociativeArray();
    a.put("Jim","Rome");
    a.put("Fred","Smith");
    System.out.println(a);
    //{[Julian,Dymacek], [Fred,Smith]}
    System.out.println(a.get("Jim"));
    //Rome
    a.put("Jim","The Rome");
    System.out.println(a.get("Jim"));
    //The Rome
    System.out.println(a);
    //{[Jim,The Rome], [Fred,Smith]}


    }


    it prints out

    You entered an invalid key
    Jim
    You entered an invalid key
    Jim

    }

  2. #2
    pbrockway2 is offline Moderator
    Join Date
    Feb 2009
    Location
    New Zealand
    Posts
    4,716
    Rep Power
    17

    Default

    If you want a collection that associates a value with some unique key use a Map. Sun's Tutorial has discussion and usage examples in the section The Map Interface.

    Or is implementing this some sort of homework? If so - unless someone cares to do it for you - you would be best to work on just one piece of functionality at a time. If you get stuck post what you have and descriptions both of what it should do and what you observe it does do.

  3. #3
    emceenugget is offline Senior Member
    Join Date
    Sep 2008
    Posts
    564
    Rep Power
    12

    Default

    it's also probably better to use generics for the key and value.

Similar Threads

  1. Help!! With arrays
    By ookie833 in forum New To Java
    Replies: 8
    Last Post: 12-14-2008, 12:57 AM
  2. Need help with 2D arrays...
    By rrsv2 in forum New To Java
    Replies: 3
    Last Post: 11-30-2008, 03:15 AM
  3. Help on Arrays...
    By cuellar14 in forum New To Java
    Replies: 4
    Last Post: 07-25-2008, 08:16 PM
  4. new to arrays
    By jimJohnson in forum New To Java
    Replies: 1
    Last Post: 04-08-2008, 02:45 PM
  5. 2D-Arrays
    By kbyrne in forum New To Java
    Replies: 1
    Last Post: 02-07-2008, 10:08 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •