gpt4 book ai didi

java - Comparator 的 compare() 函数从 Map 中删除重复项

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:45 26 4
gpt4 key购买 nike

我有一个 SortedMap,其中包含如下项目:

  • 1=abc
  • 2=xyz
  • 3=abc

值可以重复。

我想以排序的方式在屏幕上显示值集。即

我的列表 map

  • abc
  • abc
  • 某某

为了对 Map 进行排序,我使用了 comparator:

public class SortMapByValueComparator implements Comparator<String> {

Map<String, String> mInputMap;

/**
* Constructor.
*
* @param inputMap
*/
public SortMapByValueComparator(Map<String, String> inputMap) {
mInputMap = inputMap;
}

@Override
public int compare(String lhs, String rhs) {
String string1 = mInputMap.get(lhs);
String string2 = mInputMap.get(rhs);
return string1.compareToIgnoreCase(string2);
}

}

然后将 Map 传递给这个比较器,例如:

SortMapByValueComparator sortMapByValueComparator = new SortMapByValueComparator(myListMap);
SortedMap<String, String> sortedMapByValue = new TreeMap<String, String>(sortMapByValueComparator);
sortedMapByValue.putAll(myListMap);

现在,问题是当我调用 SortMapByValueComparator 时,它会删除重复值。我该如何避免?

PS - 我只想使用 map 。

最佳答案

问题是当两个字符串相等时 compareToIgnoreCase() 返回 0,而返回 0 就是合并键,正如解释的那样 here .以不返回零的方式实现您的比较,它应该可以正常工作。

if(string1.compareToIgnoreCase(string2) >= 0)
return 1;
else
return -1;

关于java - Comparator 的 compare() 函数从 Map 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com