
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;
}
请问这种方法真的可行吗?为什么我觉得这种不太对呢? 展开
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;
}
请问这种方法真的可行吗?为什么我觉得这种不太对呢? 展开
2个回答
展开全部
这个方法是可行的的,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方法,就可以 ~
追问
那再请教您,书中给出的这种方法是否是可行的?我个人感觉好像不太对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询