【发布时间】:2017-12-04 22:27:08
【问题描述】:
我有一个 intersect 方法,它接受两个包含相同类型对象的 ArrayList,并返回两个列表中的对象列表。
public static ArrayList<TimeSlot> intersectTS(ArrayList<TimeSlot> List1, ArrayList<TimeSlot> List2)
{
ArrayList<TimeSlot> intersection = new ArrayList<TimeSlot>();
for(TimeSlot TS1 : List1)
{
for(TimeSlot TS2 : List2)
{
if(TimeSlot.Equals(TS2,TS1))
{
intersection.add(TS2);
}
}
}
return intersection;
}
现在它只能使用 TimeSlot 对象,我必须为要使用此方法的所有其他类型的对象创建一个几乎相同的方法。
有没有一种方法可以做到这一点?
谢谢
【问题讨论】:
-
使用泛型?
public static ArrayList<T> intersectTS(List<T> list1, List<T> list2) -
假设您的意思是
equals,而不是TimeSlot类中的一些特殊的Equals方法,那么svasa 的评论就是正确答案。 -
请遵守 Java 命名约定,看看
TimeSlot.Equals的代码会很有趣。为什么不是普通的equals方法,或者它做了什么不同的事情? -
@svasa 的回答在
ArrayList<T>之前省略了<T>,但在其他方面是正确的。 -
是的,我猜 Equals 有点奇怪。我拿起 java 来做一个项目,但我对内部工作原理不太了解。我只擅长 Python。 “等于”是一种特殊的方法吗?