我想要比较包含两个独立类的实例的两个数组列表。
例如:第一名单: HKY SGP 15:00 3 20:20 700
第二名:1 HKY SGP 8:00
因此,如果第一个列表包含单词HKY和SGP,则需要返回值700。这两种方法在一个单独的类中进行比较,称为cost。我使用main方法将数组列表传递给这个成本类。然后,此成本类继续比较数组列表。
我尝试过的:我在谷歌上搜索了这个问题,并尝试使用他们提供的一些解决方案。我尝试过使用contains或equal。它给了我一个不正确的值。
然后,我尝试使用两个类中的get方法进行比较。它也没有给出所需的输出。
我想我错误地比较了这两个对象,不确定如何比较。有人能解释一下如何在数组列表中比较这些对象吗?
谢谢!
main中的代码:
ArrayList<planes> air = new ArrayList<>();
ArrayList<questions> q = new ArrayList(); // same as below for questions
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
for (int i=0; i<num; i++){
planes p = new planes();
p.setfrom(sc.next());
p.setTo(sc.next());
p.setdT(sc.next());
p.setaD(sc.next());
p.setaT(sc.next());
p.setCt(sc.next());
air.add(p);
}
发布于 2013-09-13 11:33:21
编写一个自定义的Comparator<T>
来做你需要的事情。
也许两者的正则表达式都可以做到:
// two Strings both contain "foo"
return x.matches("[foo]") && y.matches("[foo]");
如果regex不能做到这一点,实现你自己的Knuth-Morris-Pratt匹配器:
发布于 2013-09-13 11:36:53
您可以实现Comparator<T>
。所以实现接口必须覆盖它的compare(T arg0, T arg1)
方法。在T
中,您可以将任何类型与之进行比较。如ArrayList<>(),Class,String等,并检查字符串是否包含HKY SGP;如果它们总是相邻的,那么你可以直接这样做:
public int compare(String list1, String list2) {
return list1.contains("HKY SGP") && list2.contains("HKY SGP") ? 700 : 0;
}
如果两个字符串都包含"HKY SGP“或0,则返回700。
如果"SGP“并不总是在"HKY”之后,那么只需检查它们中的每一个。类似于:
return list1.contains("HKY") && list1.contains("SGP") && list2.contains("HKY") && list2.contains("SGP") ? 700 : 0;
https://stackoverflow.com/questions/18785291
复制相似问题