java中两个list对比有啥好办法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中两个list对比有啥好办法?相关的知识,希望对你有一定的参考价值。
最简单的方法就是二重循环,可有没有直接的方法可以把两个LIST的数据做比对?然后取出一样的来?
为什么不好好看看JAVA API呢.上面都有啊.Arrays.equals(Object[] a, Object[] a2)
如果两个指定的 Objects 数组彼此相等,则返回 true。
Arrays.deepEquals(Object[] a1, Object[] a2)
如果两个指定数组彼此是深层相等 的,则返回 true。
如果你比较了之后,还要取出一样的元素,那么JAVA没有这种函数了.只能循环了.
我说楼上的.现在用泛化和双参FOR循环的是JDK1.5以上才用的,如果楼主用的不懂这些你只能让他更加难以理解.不要用问题解决问题. 参考技术A 谁说的用2重循环最简单了???不能说的太绝对了。如果你的List放的不是对象,使用这个方法。举个例子contains(Object o)
方法
List<String> lt1 = new ArrayList<String>();
lt1.add("ab");
lt1.add("bb");
lt1.add("cc");
List<String> lt2 = new ArrayList<String>();
lt2.add("ab");
lt2.add("cc");
lt2.add("dd");
for(String kk:lt1)
if(lt2.contains(kk))
System.out.println(kk);
C++链表表示法,有啥区别?
【中文标题】C++链表表示法,有啥区别?【英文标题】:C++ linked list notation, what is the difference?C++链表表示法,有什么区别? 【发布时间】:2021-01-09 11:04:50 【问题描述】:我只是想知道这两个符号之间是否有区别:
第一个例子:
struct node
int data;
node* next;
;
void insert(node* list)
node* n,* last;
last = list;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
int main()
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
第二个例子:
struct node
int data;
node* next;
;
void insert(node* list)
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
int main()
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
所以我想知道符号谎言之间是否有区别: 在第一个例子中:
last = list;
在第二个例子中
last = lista -> next;
node* list 在 void insert(node* list) 中做什么/代表什么 这只是一个指向任何列表的指针,一个指向主列表的指针,还是什么?
【问题讨论】:
显然是有区别的。如果list
是空指针怎么办?
它们当然有一个共同点——两个示例都无法编译,因为lista
是一个未声明的标识符。
您在代码中泄漏了大量内存。并尝试使用 RAII。
是的,我知道我没有释放内存,我只是想知道区别,但现在我想我明白了。感谢@JHBonarius 提供的信息,你和 Evg7 的 cmets 是这里唯一有用的 cmets,其他人只是投反对票,或者指出错别字,非常感谢:)
【参考方案1】:
您的上述解释是正确的,但让我再补充一点,假设您的
list = NULL;
void insert(node* list)
node* n,* last;
last = list -> next;
while(last)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
然后在上述情况下,您尝试访问“NULL”的下一个 list->next
,因此它会给您运行时错误,因为您无法访问 nullptr 的下一个,因为它没有定义。
【讨论】:
感谢您更新答案;) 快乐是我的全部@Demigod98 !很高兴分享(-:【参考方案2】:struct node
int data;
node* next;
;
void insert(node* list)
node* n,* last;
last = list;
while(last -> next)
last = last -> next;
n = new node;
last = n;
n -> next = NULL;
cin >> n -> data;
int main()
node* list = new node;
list -> next = NULL;
insert(list);
return 0;
好吧,显然没有人想给我答案,所以我自己找到了答案。这就是编码的样子。 原因:
last = list -> next;
以下内容不起作用:list -> next 被声明为 NULL 因为一开始它不指向任何元素,所以显而易见的答案是:
last = list;
因为列表包含指向下一个元素的头部地址
【讨论】:
以上是关于java中两个list对比有啥好办法?的主要内容,如果未能解决你的问题,请参考以下文章
linuxC语言 从一个只读文件中取出目标字符串后面的值,有啥好办法
在source insight里有啥好办法一次性把tab替换为空格?