好吧,我测试了TreeMap,但它没有考虑字符串比较中的IgnoreCase.我需要按字典顺序排序并忽略大小写.还有其他方法吗?
谢谢,这是有效的(TreeMap(Comparator c)).但是,我有另一个问题:
public final Comparator<Object> STR_IGN_CASE_COMP = new Comparator<Object>() {
public int compare(Object h1, Object h2) {
String s1 = h1.getId();
String s2 = h2.getId();
return s1.compareToIgnoreCase(s2);
}
}; //STR_IGN_CASE_COMP
Run Code Online (Sandbox Code Playgroud)
如何将比较器广泛化以适应不同的对象?假设所有人都有getId()方法.
谢谢,马丁
public final Comparator<String> ID_IGN_CASE_COMP = new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
};
private Map< String, Animal > _animals = new TreeMap< String, Animal >(ID_IGN_CASE_COMP);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使用方法get(id)忽略给定的比较器.我希望地图按Case Insensitive排序,但是,当我通过给定键获取值时,我希望它区分大小写.
我是代码块的新手,我似乎无法使用<input>输出的命令行参数.有谁知道怎么做?
我现在能够读取从argv [1]传递的文件但是,程序不会自动读取给定文件的输入,也不会将输出正确输出到文件输出.
我知道它是在set程序的参数上,我的参数行是:list.txt <input> output
经过一些研究,我看到一个人这样做:<./ input> ./output,好像在运行一个程序给出输入和输出,无论如何,我也尝试过无济于事.我是否需要使用文件处理程序与之交互?它没有出现,简单的getchar()应该从传递的输入文件中读取.
我在这里错过了什么?
提前致谢
我是prolog的新手,我无法弄清楚这一点.
我正在尝试构建一个简单的程序,它接收一个谓词列表,搜索列表中的特定谓词,并将一个函数应用于该谓词的参数.
这些方面的东西:
?- program([pred1(a,b,p), pred2(d,b,p), pred2 (a,c,p)]).
program (list1) :-
search(pred2(X,Y,p),list1).
doSomething (X,Y) % with the X and Y returned from search function, both of them.
Run Code Online (Sandbox Code Playgroud)
基本上,我想使用从目标返回的所有值search(pred2(X,Y,p),list1)并在另一个函数上使用它们.
好的,我在prolog中尝试了一些东西,然后来到这里:
member(X, [X | _]).
member(X, [_ | R]) :- member(X, R).
prog(L1,Out) :- member(pred2(X,Y), L1).
?- prog ([(pred1(a,b),pred2(c,b),pred2(d,a)],Out).
Run Code Online (Sandbox Code Playgroud)
它按照预期给出了2倍,但我想得到Out = [c,b]和Out = [d,a].我怎么能做到这一点?
关于Oak的回答:我认为它不是一种过程语言,但我无法弄清楚如何访问值并在prolog中使用它们.你的例子没那么有用.
是否可以使用比较器序列化TreeMap?
我已经测试了它并且它没有比较器很好地序列化树形图,当你添加比较器时,它会引发异常.
如果我将比较器声明为瞬态,它仍然不起作用.它只适用于我使每个树图瞬态但在这种情况下它不会序列化树.
java ×3
comparator ×2
treemap ×2
c ×1
codeblocks ×1
collections ×1
input ×1
list ×1
output ×1
parameters ×1
prolog ×1
redirect ×1
sorting ×1