java 没有contains_List.contains()没有返回正确的结果,但是手动搜索确实 - java

我的代码发生了一个奇怪的问题:

RestAPIHeader requestedBy = new RestAPIHeader("X-Requested-By", "test");

// Act

RestAPIRequest req = prepareLoginRequest(USER_NAME, PASSWORD);

// The following returns a list of header objects such that one of them

// is "X-Requested-By: test"

List headers = req.getAllHeaders();

boolean foundRequestedBy = false;

for (RestAPIHeader h : headers) {

Log.d(LOGTAG, "Header: " + h.toString());

if (requestedBy.equals(h)) {

foundRequestedBy = true;

}

}

// Assert

assertNotNull(req);

// This assertion passes

assertTrue(foundRequestedBy);

// This assertion fails

assertTrue(headers.contains(requestedBy));

令我困扰的是,这段代码中headers.contains(requestedBy)应该等同于foundRequestedBy(因为这是简单搜索的结果)。但是,正如我在评论中提到的那样,它实际上并没有返回相同的值。似乎contains并没有使用equals(),而是==。有人可以指出为什么会这样吗?

编辑:

equals类的RestAPIHeader方法如下:

public boolean equals(RestAPIHeader aOther) {

return mPropertyName.equals(aOther.getHeaderName())

&& mPropertyValue.equals(aOther.getHeaderValue());

}

参考方案

等于的签名是

public boolean equals(Object o);

所以你的equals方法

public boolean equals(RestAPIHeader aOther);

是重载,而不是替代。包含例程不会调用此重载。因此,您只需要将签名更正为

public boolean equals(Object o) {

if(!(o instanceof RestAPIHeader))

return false;

RestAPIHeader aOther = (RestAPIHeader)o;

/* same as yours from here */

Java-固定大小的列表与指定初始容量的列表之间的差异 - java

我在理解这一点上遇到了问题。当我们做 List list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List list2 = new A…与在Java中分配数组与分配链表相比,要使用多少内存? - java

我的猜测是,存储在数组中的每个值都有32位/ 64位字(取决于CPU)。因此它将是数组大小X 32位/ 64位。对于链表,存储指向下一个元素的引用将是链接列表的两倍。因此它将是2 *数组大小X 32位/ 64位。这是正确的,我有什么遗漏吗? java大神给出的解决方案 多得多。链表中的每个元素都有:指向下一个元素的指针,指向上一个元素的指针,指向项目值的指针…从方法参数或引用创建新对象 - java

public setArrayList(List list) { this.list = list; //OR this.list = new ArrayList(list); } 我看到不同的人可以交替使用此代码。这两种实现之间有区别吗? 参考方案 是的-这两个示例在功能上有所不同。public …如何确保列表中的项目是连续的? - java

美好的一天 !我想问一下我是否有清单1,2,3,4,5 ..然后我将替换值“ 3”插入到“ 7”,这将提示我错误原因是列表不连续。List items = new ArrayList(); 参考方案 您可以重写ArrayList,设置和添加方法以检查设置/添加的项是否有效,如果无效,则抛出Illegal…如何添加一个double值和一个double列表元素? - java

我尝试了一个代码double temp=0; List list=new ArrayList(); list.add(1.1); temp+=list.get(0); //error occurs here 发生的错误如下 二进制运算符'+'的错误操作数类型 第一种:双 第二类:对象如何在列表中添加临时值和双精度值?我首选的编程语言是Java。 参考方案 在…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值