首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >比较具有类的包含实例的两个数组列表

比较具有类的包含实例的两个数组列表
EN

Stack Overflow用户
提问于 2013-09-13 19:31:10
回答 2查看 636关注 0票数 0

我想要比较包含两个独立类的实例的两个数组列表。

例如:第一名单: HKY SGP 15:00 3 20:20 700

第二名:1 HKY SGP 8:00

因此,如果第一个列表包含单词HKY和SGP,则需要返回值700。这两种方法在一个单独的类中进行比较,称为cost。我使用main方法将数组列表传递给这个成本类。然后,此成本类继续比较数组列表。

我尝试过的:我在谷歌上搜索了这个问题,并尝试使用他们提供的一些解决方案。我尝试过使用contains或equal。它给了我一个不正确的值。

然后,我尝试使用两个类中的get方法进行比较。它也没有给出所需的输出。

我想我错误地比较了这两个对象,不确定如何比较。有人能解释一下如何在数组列表中比较这些对象吗?

谢谢!

main中的代码:

代码语言:javascript
代码运行次数:0
运行
复制
    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);


    }
EN

回答 2

Stack Overflow用户

发布于 2013-09-13 19:33:21

编写一个自定义的Comparator<T>来做你需要的事情。

也许两者的正则表达式都可以做到:

代码语言:javascript
代码运行次数:0
运行
复制
// two Strings both contain "foo"
return x.matches("[foo]") && y.matches("[foo]");

如果regex不能做到这一点,实现你自己的Knuth-Morris-Pratt匹配器:

http://www.ics.uci.edu/~eppstein/161/960227.html

票数 3
EN

Stack Overflow用户

发布于 2013-09-13 19:36:53

您可以实现Comparator<T>。所以实现接口必须覆盖它的compare(T arg0, T arg1)方法。在T中,您可以将任何类型与之进行比较。如ArrayList<>(),Class,String等,并检查字符串是否包含HKY SGP;如果它们总是相邻的,那么你可以直接这样做:

代码语言:javascript
代码运行次数:0
运行
复制
public int compare(String list1, String list2) {

    return list1.contains("HKY SGP") && list2.contains("HKY SGP") ? 700 : 0;
}

如果两个字符串都包含"HKY SGP“或0,则返回700。

如果"SGP“并不总是在"HKY”之后,那么只需检查它们中的每一个。类似于:

代码语言:javascript
代码运行次数:0
运行
复制
return list1.contains("HKY") && list1.contains("SGP") && list2.contains("HKY") && list2.contains("SGP") ? 700 : 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18785291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档