java - 根据自定义值对 HashMap 进行排序(例如,它是一个名为 DATA 的类)

标签 java excel hashmap

有没有办法按频率对其进行排序(降序/升序)?

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()); }
}

此示例的输出为

变量 = 变量4,频率 = 2,具体性 = 5

变量 = 变量1,频率 = 3,具体性 = 5

变量 = 变量2,频率 = 1,具体性 = 5

变量 = 变量3,频率 = 1,具体性 = 5

这是我使用的数据类

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;
    }
}

最佳答案

您无法对 HashMap<K,V> 进行排序,但是如果您创建其键值对的列表

List<Map.Entry<String,Data>> entries = new ArrayList<Map.Entry<String,Data>>(map.entrySet());

您可以使用自定义比较器对其进行排序。这是link to Q&A explaining how this can be done .

关于java - 根据自定义值对 HashMap 进行排序(例如,它是一个名为 DATA 的类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29324001/

相关文章:

java - fragment 添加不起作用

java - 如何反转三角形锯齿状数组?

excel - 在vba中用文本输入公式

php - 如何使用 Tiny But Strong 的 Excel 插件合并多个 Excel 文档?

java - 对于 HashMap,我应该重写键或值的 hashCode 吗?

Java gson 通用数组/列表反序列化

Java二维数组乘法错误?

excel - 将逗号分隔的表展开为多行

c++ - 如何检测 unordered_map vector 中的重复项?

java - hashmaps get 函数的问题