我有一个对象列表,我需要根据其中一个字段的属性进行排序.我听说SortedMap和Comparators是最好的方法.
编辑: 这段代码给我一个错误:
private TreeMap<Ktr> collection = new TreeMap<Ktr>();
Run Code Online (Sandbox Code Playgroud)
(Ktr实施Comparator<Ktr>).Eclipse说它期待类似的东西TreeMap<K, V>,所以我提供的参数数量不正确.
好的,我有这个代码:
TreeMap<DateTime, Integer> tree2 = getDatesTreeMap();
DateTime startx = new DateTime(startDate.getTime());
DateTime endx = new DateTime(endDate.getTime());
boolean possible = false;
int testValue = 0;
//produces submap
Map<DateTime, Integer> nav = tree2.subMap(startx, endx);
for (Integer capacity : tree2.subMap(startx, endx).values()) {
//Provides an insight into capacity accomodation possibility
//testValue++;
terminals = 20;
if(capacity >= terminals)
possible = true;
else if(capacity < terminals)
possible = false;
}
if(possible == true)
{
for (Integer capacity : tree2.subMap(startx, endx).values()) {
{
capacity -= terminals;
//not …Run Code Online (Sandbox Code Playgroud) 我需要像TreeMap一样排序的地图,但按值排序.我的地图将是巨大的,所以我不能随时对我的地图进行排序.是否存在解决此问题的好方案?也许存在符合此要求的外部罐子?
我尝试使用的containsKey方法TreeMap,但是以某种方式我遇到了问题。
存储在树形图中的对象的定义与equals()不会产生相同的结果compareTo()。这是有意的。
但是,的文档java.util.Map说:
如果此映射包含指定键的映射,则返回true。更正式地说,当且仅当此映射包含键k的映射(例如)时,才返回true
(key==null ? k==null : key.equals(k))。(最多可以有一个这样的映射。)
因此,我尝试了以下操作:
c = someModifiedObject();
boolean t1 = sm.containsKey(c);
someObject c2 = new someObject();
boolean t2 = sm.containsKey(c2);
boolean t3 = c.equals(new Chain());
int t4 = c.compareTo(new Chain());
Run Code Online (Sandbox Code Playgroud)
t1为true,因为对象位于树形图中。t3为true,因为t1等于t3(对于更改equals()运算符而言)t4为false,但是,t2也为false。似乎TreeMap使用compareTo()而不是equals()确定对象是否存在。
是否有排序映射的另一种实现,可以equals()用来检查对象是否存在?
我正在尝试查看集合中的项目,但似乎Eclipse会一遍又一遍地循环:

如何查看TreeMap集合中的各个项目?
我试图删除在运行Mavericks的Macbook Air上使用版本2.4在R版本3.1上创建的R树形图上的顶级标签.
从树形图文档运行以下示例:
require(treemap)
data(business)
business <- transform(business, data.available = factor(!is.na(turnover)), x = 1)
tm <- treemap(business,
index=c("NACE1", "NACE2"),
vSize="x",
vColor="data.available",
type="categorical")
Run Code Online (Sandbox Code Playgroud)
这是生成的树形图:
我想使用fontsize.labels参数删除顶级标签,例如"C - Manufacturing"等,其中说:
"使用值0省略相应聚合级别的标签."
当我尝试这个:
tm <- treemap(business,
index=c("NACE1", "NACE2"),
vSize="x",
vColor="data.available",
type="categorical",
fontsize.labels = c(0,16))
Run Code Online (Sandbox Code Playgroud)
确实删除了顶级标签,但第二级标签不再正确对齐 - 字体大小减少,因此文本适合所有在一行中,这使得难以阅读.
我尝试过使用inflate.labels,但这是一个适用于所有级别的单个逻辑值(我的用例有3个嵌套级别,我只想删除顶级标签)和lowerbound.cex.labels,force的各种组合. print.labels似乎没有得到我正在寻找的结果.
从2.5年前找到这个答案:如何省略R树形图中的标签?但是我更愿意避免在绘制树形图后对其进行后处理(我将它们发送到pdf,所以我不想在之后对pdf文件进行后处理).另外,我宁愿避免运行依赖于创建的树图的内部结构的代码.
看起来像fontsize.labels应该做我需要的 - 只是不能让第二级标签正确地证明(包装).我错过了什么吗?
我有一个由分类树图compareTo的Account类.
当我启动树形图时,它会被排序,但是当我尝试使用此功能(为特定帐户添加资金)时,仅当我更改的值不是树形图中的第一个或最后一个时,它才有效.
这是代码.我究竟做错了什么?
public static void deposit(TreeMap<Account,MyLinkedList<Customer>> map){
boolean flag = false;
int num ;
int amount;
System.out.println("please enter account number");
num = s.nextInt();
//for(Iterator<Account> i = map.;i.hasNext())
for(Map.Entry<Account, MyLinkedList <Customer>> entry : map.entrySet()){
if(entry.getKey().getAccNumber() == num){
flag = true;
System.out.println("Please enter amount");
amount = s.nextInt();
entry.getKey().setAccBalance(entry.getKey().getAccBalance()+amount);
Account temp = entry.getKey();
MyLinkedList<Customer> tempList = entry.getValue();
map.remove(entry.getKey());
map.put(temp, tempList);
break;
}
}
if(flag == false) {
System.out.println("Account doesn't exist");
return;
}
}
}
Run Code Online (Sandbox Code Playgroud) 好吧,我有这个包含playerID和玩家averageScore的树形图.我想把它分成另外两张地图,这样每支球队都有一定数量的球员,整体球员得分大致相同(偏差约为+/- 2)
private TreeMap<Integer, Double> teamScoreMap = new TreeMap<>();
private TreeMap<Integer, Double> team1 = new TreeMap<>();
private TreeMap<Integer, Double> team2 = new TreeMap<>();
public void createTeam()
{
teamScoreMap.put(001, 5.0);
teamScoreMap.put(002, 8.4);
teamScoreMap.put(003, 2.1);
teamScoreMap.put(004, 6.5);
teamScoreMap.put(005, 4.5);
teamScoreMap.put(006, 3.2);
teamScoreMap.put(007, 9.8);
teamScoreMap.put(008, 7.6);
}
Run Code Online (Sandbox Code Playgroud) 我想知道是否有人可以在Bokeh中使用任何可缩放树形图的链接。类似于Mike Bostock的示例:https : //bost.ocks.org/mike/treemap/
特别是:Bokeh中似乎还没有树状布局,也许这是第一个开始的地方?然后,我假设需要做某种形式的动画才能从一个树层次结构流向另一个树层次结构。
类似的问题请参阅:如何使HashMap与数组一起使用?
但我需要TreeMap ((int key1, int key2) -> String),key1然后比较key2.
我的解决方案是:
Map<int[], String> map = new TreeMap<>(Comparator.
<int[]>comparingInt(key -> key[0]).thenComparingInt(key -> key[1]));
Run Code Online (Sandbox Code Playgroud)
但是当我需要时((int key1, int key2, int key3) -> String,我必须写更多.
有没有办法为任意长度的数组生成Comparator?