我正在尝试使用字符串作为键来创建HashMap,并使用自定义比较器(CandidateComparator)作为值进行排序。
HashMap<String, TreeSet<Candidate>> map = new HashMap<String, TreeSet<Candidate>(new CandidateComparator())>();
我看不出我做错了什么。我在使用这个网站:
http://www.java2novice.com/java-collections-and-util/treeset/sort-by-objects/
作为参考。
此语句产生两个语法错误:
1。插入'&gt;'完成ReferenceType1;
2。此标记之后的预期表达式'(' - 指的是最后一个'(声明的'。
我做错了什么?
答案 0 :(得分:0)
应该以这种方式初始化HashMap:
library test_utils.test_script_dir;
import 'dart:io';
import 'package:path/path.dart';
// temp workaround using test package
String get testScriptDir {
String scriptFilePath = Platform.script.toFilePath();
print(scriptFilePath);
if (scriptFilePath.endsWith("runInIsolate.dart")) {
// Let's look for this line:
// import "file:///path_to_my_test/test_test.dart" as test;
String importLineBegin = 'import "file://';
String importLineEnd = '" as test;';
int importLineBeginLength = importLineBegin.length;
String scriptContent = new File.fromUri(Platform.script).readAsStringSync();
int beginIndex = scriptContent.indexOf(importLineBegin);
if (beginIndex > -1) {
int endIndex = scriptContent.indexOf(importLineEnd, beginIndex + importLineBeginLength);
if (endIndex > -1) {
scriptFilePath = scriptContent.substring(beginIndex + importLineBegin.length, endIndex);
}
}
}
return dirname(scriptFilePath);
}
HashMap本身不需要比较器。您需要HashMap<String, TreeSet<Candidate>> map = new HashMap<String, TreeSet<Candidate>>();
的实例来填充TreeSet
,并且每个实例都需要一个比较器。
HashMap
答案 1 :(得分:0)
Comparator
是指TreeSet
,而不是HashMap
。此外,Comparator
不是TreeSet
的类型定义的一部分(例如,TreeSet<Candidate>
) - 它只在创建新实例时传递。
所以,简而言之 - 从定义中删除它并在构造对象时传递它:
Map<String, TreeSet<Candidate>> map = new HashMap<String, TreeSet<Candidate>>();
map.put ("SomeString", new TreeSet<Candidate>(new CandidateComparator()));