Java LinkedList中的indexOf查找的问题

我想使用LinkedList来实现一个链表,表中基本元素是一个类Id的对象。Id的定义如下:classId{privateStringid;doublevalue;...... 我想使用LinkedList来实现一个链表,表中基本元素是一个类Id的对象。Id的定义如下:
class Id{
private String id;
double value;
.......
//省略构造函数和其它细节
}
LinkedList idList = new LinkedList();
在向链表中添加元素时,通过以下的方法实现:
static void addElenment(String id,double v){
Id tmp=new id(id,v); //调用构造函数
idList.add(tmp);
}
当我想利用indexOf函数对表中某一个id所对应的value进行查找的时候应该如何实现?

PS:在一本书中我看到了利用以下方法进行查找:
static double findValue(String id){
int pos;
pos=idList.indexOf(new Id(id,0.0);
return idList.get(pos).value;
}
请问这种方法真的可行吗?为什么我觉得这种不太对呢?
展开
 我来答
smileXbel
2016-10-08 · TA获得超过277个赞
知道小有建树答主
回答量:423
采纳率:100%
帮助的人:265万
展开全部

这个方法是可行的的,indexOf方法 比较的是通过equal方法比较的

如果你重写了equal方法,就使用你的规则进行比较,否则使用系统默认的方法即 Object中的equal方法;

给你贴个demo;

public class Main{
public static void main(String[] args) {
LinkedList<Book> list = new LinkedList<>();
Book a = new Book(1,"a");
Book b = new Book(2,"b");
Book c = new Book(3,"c");
Book d = new Book(4,"d");
list.add(a);
list.add(b);
list.add(c);
list.add(d);

int index = list.indexOf(new Book(4, "d"));
System.out.println(index);

}
}
class Book{
int id;
String name;
public Book(int id,String name){
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
Book book = (Book) obj;
if(book!=null){
if((book.id == this.id) && (book.name.equals(this.name)))
return true;
}
return false;
}
}
追问
您好!首先非常感谢您的热心回答,另外我的问题是如果我只知道其id而不知道name的值的情况下(就像您给出的demo中只知道id=4但不知道name="d"),能否使用indexOf方法找到对应的name的值呢?
就像我在PS的内容提到的那种方法 index=indexOf(new Book(4,null)); return list.get(index).name;
追答
肯定可以的啊,你的Book 的所有实体都在list 中, list.get(index)  可以得到 index  对应的 Book ,如果 你只需要index  就可以找到 对应的book  ,你的equal  方法需要修改,判断 如果id相同 就返回true;
匿名用户
2016-10-05
展开全部
覆盖对象Id的equals方法,就可以 ~
追问
那再请教您,书中给出的这种方法是否是可行的?我个人感觉好像不太对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式