samedi 28 mars 2015

Sorting a HashMap based on Custom Value (in my e.g. it's a Class Called DATA)

Is there a way to sort this on the frequency (Descending/Ascending)?



public static void main(String[] args)
{
Map <String, Data> map = new HashMap <String, Data>();

String [] variables={"variable1", "variable2", "variable3", "variable4", "variable4", "variable1","variable1"};
int Concreteness=5;//for this example every variable will have the same cncreteness

for(int i=0; i<variables.length;i++)
{
Data variable_exists=map.get(variables[i]);

if(variable_exists!=null)
variable_exists.setFrecuency(variable_exists.getFrecuency()+1);
else
map.put(variables[i], new Data(Concreteness,1));

}

for (Map.Entry<String, Data> entry : map.entrySet())
{ System.out.println("variable = " + entry.getKey() + ", Frecuency = " + entry.getValue().getFrecuency()+ ", Concreteness = " + entry.getValue().getConcreteness()); }
}


the output for this example would be


variable = variable4, Frecuency = 2, Concreteness = 5


variable = variable1, Frecuency = 3, Concreteness = 5


variable = variable2, Frecuency = 1, Concreteness = 5


variable = variable3, Frecuency = 1, Concreteness = 5


and here is the Data class i used



public class Data
{
private int frecuency;
private int Concreteness;

Data (int Concreteness, int frecuency)
{
setFrecuency(frecuency);
setConcreteness(Concreteness);
}
public int getFrecuency()
{
return frecuency;
}

public void setFrecuency(int frecuenxy)
{
this.frecuency = frecuenxy;
}

public int getConcreteness()
{
return Concreteness;
}

public void setConcreteness(int Concreteness)
{
this.Concreteness = Concreteness;
}
}

Aucun commentaire:

Enregistrer un commentaire