如何比较Arraylist中每对的2个元素(Java)

如何比较Arraylist中每对的2个元素(Java),java,interface,Java,Interface,我有一对接口 import java.util.ArrayList; public interface Pair<T,M> { public T getFirst(); public M getSecond(); public ArrayList<Pair<T,M>> Compare(ArrayList<Pair<T,M>> list); } import java.util.ArrayList; 公共接口对

我有一对接口

import java.util.ArrayList;

public interface Pair<T,M> {
    public T getFirst();
    public M getSecond();
    public ArrayList<Pair<T,M>> Compare(ArrayList<Pair<T,M>> list);
}
import java.util.ArrayList;
公共接口对{
公共T getFirst();
公共M getSecond();
公共ArrayList比较(ArrayList列表);
}
以及一个名为MatchingPairs的类,该类实现Pair接口:

import java.util.ArrayList;

public class MatchingPairs implements Pair<Integer, Integer> {

    @Override
    public Integer getFirst() {
        return null;
    }

    @Override
    public Integer getSecond() {
        return null;
    }

    @Override
    public ArrayList<Pair<Integer, Integer>> Compare(ArrayList<Pair<Integer, Integer>> list) {
        return null;
    }
}
import java.util.ArrayList;
公共类MatchingPairs实现了Pair{
@凌驾
公共整数getFirst(){
返回null;
}
@凌驾
公共整数getSecond(){
返回null;
}
@凌驾
公共ArrayList比较(ArrayList列表){
返回null;
}
}

我不知道如何通过实现比较方法来比较每对中的第一个元素和第二个元素。

我不确定您使用比较方法想要实现什么。但这里有一个使用可比较接口比较两个匹配对列表的示例

import org.jetbrains.annotations.NotNull;
导入java.util.List;
导入java.util.stream.collector;
公共班机{
公共接口对扩展{
T getFirst();
M getSecond();
}
公共静态类MatchingPairs实现了Pair{
私有最终整数优先;
私有最终整数秒;
公共匹配对(int-first,int-second){
this.first=first;
这个秒=秒;
}
@凌驾
公共整数getFirst(){
先返回;
}
@凌驾
公共整数getSecond(){
返回第二;
}
/**
*如果第一个和第二个对象在该对象和另一个对象中相等,则返回0
*如果此对象中的第一个和第二个值都大于('this'大于'other'),则返回1
*否则返回-1('this'小于'other')
*/
@凌驾
public int compareTo(@NotNull对其他){
int cf=this.getFirst().compareTo(other.getFirst());
int cs=this.getSecond().compareTo(other.getSecond());
如果(cf==0&&cs==0){
返回0;
}否则如果(cf>0&&cs>0){
返回1;
}
返回-1;
}
@凌驾
公共字符串toString(){
返回“MatchingPairs{first=“+first+”,second=“+second+'}”;
}
}
公共静态void main(字符串[]args){
列表对=列表(新匹配对(2,3)、新匹配对(1,2)、新匹配对(1,1));
MatchingPairs find=新的匹配对(1,2);
//收集大于“查找”的所有对
列表匹配=pairs.stream()
.filter(mp->mp.compareTo(查找)>0)
.collect(Collectors.toList());
系统输出打印项次(匹配);
}
}
compareTo方法的具体实现可能与您不同,因为您没有指定要实现的具体行为。
在main方法中,我们创建一个匹配对列表,然后从该列表中收集大于指定匹配对实例的所有匹配对。

为什么元素类
匹配对
(名称似乎很奇怪)包含一个比较这些匹配对列表的方法?在同一个索引中获取元素,获取两个元素的第一个和第二个并比较它们有什么问题?你的方法
Compare()
在我看来真的很奇怪。请提供一些示例数据和方法的结果。解释它应该产生什么。通常我希望一个
Pair
实现一个
Comparable
接口,即使用
compareTo
方法,将
Pair
的这个实例与另一个
Pair
进行比较,然后返回布尔值。