Question

I am trying to search through an array and pick out all of the unique strings meaning only one instance of each string is being printed. Then I want to them print them out. However, it is not detecting any unique strings. Could someone help me figure out what is wrong?

Note: Essentially, I am trying to count how many strings there are, without counting duplicates.

public class Test {
public static String uniquecenter;

public static void main (String[] args){


    //Grab Data and Feed into Centers
    String centers[]=new String[1000];


    /* Only for Testing Purposes*/
    centers[0] = "Table Tennis";
    centers[1] = "Soccer";
    centers[2]= "Baseball";
    centers[3] = "Table Tennis";

    //Unique Centers
    String uniquecenters[]=new String [1000];


    //0 out array
    for(int i=0; i<1000;i++){
        uniquecenters[i]="0";
    }


    //loop through center array
    for(int i=0; i <1000; i++){

        boolean unique=false;


        //Loop through unique centers
        for(int l=0; l<1000; l++){

            //if it finds that this point in the centers array already has been indexed in the unique centers
            //array then it is not unique...so move on to the next center
            if(uniquecenters[l].equals(centers[i])){
                unique=true;
            }


        }

            //if it never found this string in the uniquecenters array...
            if(unique==false){

                //find an empty spot in the unique array
                for(int l=0;l<1000;l++){

                    //grab the unique centers string
                    String c=uniquecenters[l];

                    //check if something is already in this spot...if not then...
                    if(uniquecenters.equals("0")){  
                        //..make it a unique center
                        uniquecenters[l]=uniquecenter;
                    }//End of placing center
                }//end of looking for unique spot
            }//end of if it is unique


    }//end of creating this unique center array

    //print all unique strings
    for(int i =990; i>=0;i--){

        String print =uniquecenters[i];

        //if it is emptry
        if(print.equals("0")){

        }else{
            //print this unique center
            System.out.println(print);
        }
    }
}

}

Was it helpful?

Solution

You can use a Set which, by definition, does not contain duplicates:

String centers[];

...

List<String> centerList = Arrays.asList(centers);
Set<String> uniqueCenters = new HashSet<String>();
uniqueCenters.addAll(centerList);
uniqueCenters.remove(null);
Integer numberOfUniqueStrings = uniqueCenters.size();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top