Ⅰ java如果兩個數組list1和list2內容相同
privatestaticbooleanequal(int[]list1,int[]list2){
Arrays.sort(list1);
Arrays.sort(list2);
if(list1.length!=list2.length){
returnfalse;
}
for(inti=0;i<list1.length;i++){
if(list1[i]!=list2[i]){
returnfalse;
}
}
returntrue;
}
簡單排序外加比較就好啦
排序操作有自帶的工具,若要明白其排序原理,F3 一下下就好啦
Ⅱ Java中能取出List里的相同數據;比如{ { 1,2,3,4,5,6},{11,22,33,44,55,6},{12,13,14,15,16,6} };
尋找相同的數據, 可以使用多種方式,下面簡單介紹2種
第一種: 循環遍歷,然後在把每一個元素,在其他集合里查找, 如果都存在該元素,就把這個元素保存起來
第二種: java8流處理, 原理差不多, 但是語法比較簡潔
稍微注意的是list1 = {'A','A','B'}和list2 = {'A','C'} 如果粗糙的求交集,會得到一個交集結果{'A','A'}, 但是如果要嚴格取交集那麼結果是一個'A'
解決起來很簡單, 創造一個boolean[] b2=new boolean[list2.size]; 該boolean數組用於標記,list2的元素,哪些被使用了,哪些沒有被使用.被使用的立刻標記為true .下次不再使用.
簡單的參考代碼: 可以按照自己的需求進行擴展和完善
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.stream.Collectors;
publicclassDemo1{
//為了方便,全部定義成靜態屬性,方便靜態方法內使用
staticArrayList<Integer>list1=newArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));
staticArrayList<Integer>list2=newArrayList<Integer>(Arrays.asList(11,22,33,44,55,6));
staticArrayList<Integer>list3=newArrayList<Integer>(Arrays.asList(12,13,14,15,16,6));
publicstaticvoidmain(String[]args){
test1();//java8流處理
test2();//傳統遍歷循環進行處理
}
//流處理求交集
privatestaticvoidtest1(){
System.out.println("list1,list2,list3的交集是:");
list1.stream().filter(num->list2.contains(num)&&list3.contains(num)).collect(Collectors.toList()).stream()
.forEach(System.out::println);
}
//循環遍歷求交集
privatestaticvoidtest2(){
ArrayList<Integer>result=newArrayList<Integer>();
for(Integernum:list1){
if(list2.contains(num)&&list3.contains(num)){
result.add(num);
}
}
System.out.println("list1,list2,list3的交集是:");
for(Integeri:result){
System.out.println(i);
}
}
}
Ⅲ java 如何判斷list里某一欄位值全部相等
註:for (GoodsBean goods : list)是對鏈表進行循環遍歷
spid--商品ID,spmch--商品名稱
這個例子是我從現在做的一個購物車的例子里抽出來的一部分,可以運行,你試試 ,呵呵
/**
* 判斷一個list里某個欄位是否全相等
* @param list
* @return
*/
public static boolean isEqual(List<GoodsBean> list) {
List<String> listid = new ArrayList<String>();
for (GoodsBean goods : list) {
String spid = goods.getSpid();
listid.add(spid);
}
if (listid != null) {
String firstspid = listid.get(0);
for (String spid : listid) {
if (!spid.equals(firstspid)) {
System.out.println("有一個不相等,返回false");
return false;
}
}
return true; //循環完沒有找到相等的返回true
}
return false; //為空返回false
}
GoosBean是存放在List里的一個javabean
public class GoodsBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1437224000720087048L;
private String spid;
private String spmch;
// 構造方法
public GoodsBean(String spid, String spmch) {
this.spid = spid;
this.spmch = spmch;
}
public GoodsBean() {
}
// 一般方法
public String getSpid() {
return spid;
}
public void setSpid(String spid) {
this.spid = spid;
}
public String getSpmch() {
return spmch;
}
public void setSpmch(String spmch) {
this.spmch = spmch;
}
}
不好意思寫得比較匆忙
Ⅳ java獲取list相同的數據
可以用LIST集合的方法contains判斷一個元素是否在集合的數據中存在。
Ⅳ java中如何獲取list裡面相同的元素
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test {
public static void main(String args[]) {
List<String> list = new ArrayList<String>() {
private static final long serialVersionUID = -6469181946992000438L;
{
this.add("aaa");
this.add("bbb");
this.add("ccc");
this.add("aaa");
this.add("bbb");
this.add("ddd");
this.add("eee");
}
};
Set<String> set = new HashSet<String>();
for (String ls : list) {
if (set.contains(ls)) {
System.out.println("重復值:" + ls);
}
set.add(ls);
}
}
}
Ⅵ java 遞歸 linked list 求 相同元素 不同元素 還有兩個LIST是否相等
這是搞哪樣?
不但大費周章,而且容易錯……
先equalSets吧,
private static boolean equalSets(LinkedList list1, LinkedList list2){
return subset(list1,list2)&&subset(list2,list1);// 集合的內容,兩集合互為子集就是相等了
}
然後difference,
private static LinkedList difference(LinkedList list1, LinkedList list2){
while(isNull(list2)){
if(isMember(first(list2),list1))
list1=deleteAll(first(list2),list1);// 將重復元素去除
else
list1=add(first(list2),list1);// 非重復元素存入list1
list2=rest(list2);
}
return list1;
}
最後intersect,
private static LinkedList intersect(LinkedList list1, LinkedList list2){
list2=difference(list1,list2);// 得到兩集合不同的元素
while(isNull(list2)){
if(isMember(first(list2),list1))
;// 元素重復,什麼也不幹
else
list1=deleteAll(first(list2),list1);// 非重復元素刪除
list2=rest(list2);
}
return list1;
}
Ⅶ java 兩個arraylist放著相同的東西,但順序不同,怎麼判斷兩個是否相等
相等條件:相互包含,且長度相等,和相等
booleanresult=list1.containsAll(list2)&&list2.containsAll(list1)
&&list1.size()==list2.size()
&&list1.stream().mapToInt(x->x).sum()
==list2.stream().mapToInt(x->x).sum();
Ⅷ JAVA裡面,怎樣找出兩個list中相同的元素,
循環取出list1的元素,然後循環和list2中的元素進行比較,如果相等就輸出該元素。代碼如下:
importjava.util.ArrayList;
importjava.util.List;
publicclassTest{
publicstaticvoidmain(String[]args){
List<Integer>list1=newArrayList<Integer>();
List<Integer>list2=newArrayList<Integer>();
list1.add(2);
list1.add(3);
list1.add(5);
list2.add(2);
list2.add(5);
list2.add(6);
list2.add(8);
for(inti=0;i<list1.size();i++){
inttemp=list1.get(i);
for(intj=0;j<list2.size();j++){
if(temp==list2.get(j)){
System.out.println("有相同的元素:"+temp);
}
}
}
}
}
Ⅸ java里兩個長度相等 list怎麼連接到一塊
直接 list1.addAll(list2); 就可以了
Ⅹ java比較兩個list元素是否有相等
首先這里需要確定一下集合相等的定義,我們應該是認為兩個集合的元素完全一致則相等。那麼判斷可以這樣做:
第一步:判斷兩個list集合的元素個數是否相等。如果不相等則兩個list集合也不相等,判斷結束,如果相等則進入第二步判斷
第二步:判斷list1的元素是否全部在list2中。遍歷list1,取出list1中的元素,依次去list2中比較是否list2也存在這個元素。如果有任何一個list1中的元素在list2中不存在,則兩個list集合不相等,如果全部存在則兩個list集合相等。
這里需要說明一點,因為第一步中已經判斷list1和list2的元素個數是相等的,所以第二步中如果list1的元素全部在list2中,則可以證明list1與list2相等。不需要再遍歷list2中的元素,去list1中判斷是否存在。
以下是上訴過程的Java代碼例子:
public boolean equalList(List list1, List list2) {
if (list1.size() != list2.size())
return false;
for (Object object : list1) {
if (!list2.contains(object))
return false;
}
return true;
}
以上過程適用於所有編程語言。另外不同編程語言還提供了一些其他方法,所以對於不同編程語言還可以有其他寫法。
比如Java中為list集合提供了containsAll方法。所以對於Java語言還可以這么寫:
public boolean equalList(List list1, List list2) {
if (list1.size() != list2.size())
return false;
if (list2.containsAll(list1))
return true;
return false;
}
還可以簡寫成這樣
public boolean equalList(List list1, List list2) {
return (list1.size() == list2.size()) && list1.containsAll(list2);
}