比较两集合(list/set..)元素是否相等(只要 List 含有相同元素(String Type)就可以,允许重复)...

如果是list则 转 list --> set

HashSet, TreeSet 均可以实现元素唯一,以便比较。但前者元素无序,故速度快。 后者元素有序,如需二分查找之类算法有优势。

具体代码:

package com.nicekevin.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CompareList {

public static void main(String[] args) throws Exception {
// Set<String> set1 = new TreeSet<String>();
// Set<String> set2 = new TreeSet<String>();
Set<String> set1 = new HashSet<String>();
Set<String> set2 = new HashSet<String>();
set1.add("aa");
set1.add("aa");
set1.add("bb");
set1.add("cc");
set1.add("ca");

set2.add("bb");
set2.add("aa");
set2.add("cc");
set2.add("ca");

Iterator it1 = set1.iterator();
while (it1.hasNext()) {
System.out.print(it1.next().toString() + "\t");
}
System.out.println();

Iterator it2 = set2.iterator();
while (it2.hasNext()) {
System.out.print(it2.next().toString() + "\t");
}
System.out.println();

System.out.println("kaka = " + compareSet(set1, set2));
}

public static boolean compareSet(Set set1, Set set2) throws Exception {
if(set1.size() != set2.size()) {
return false;
}
Iterator it1 = set1.iterator();
while(it1.hasNext()) {
if (!set2.contains(it1.next().toString())) {
return false;
}
}
return true;
}
}
在Java中,比较list元素的属性是否相同,可以使用以下代码: ``` public static <T> boolean compareLists(List<T> list1, List<T> list2, String property) throws NoSuchFieldException, IllegalAccessException { if (list1.size() != list2.size()) { return false; } for (int i = 0; i < list1.size(); i++) { T obj1 = list1.get(i); T obj2 = list2.get(i); Field field = obj1.getClass().getDeclaredField(property); field.setAccessible(true); Object value1 = field.get(obj1); Object value2 = field.get(obj2); if (!Objects.equals(value1, value2)) { return false; } } return true; } // 示例代码 public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { List<Fruit> list1 = new ArrayList<>(); list1.add(new Fruit("apple", 1.5)); list1.add(new Fruit("banana", 2.0)); list1.add(new Fruit("orange", 1.2)); List<Fruit> list2 = new ArrayList<>(); list2.add(new Fruit("apple", 1.5)); list2.add(new Fruit("banana", 2.0)); list2.add(new Fruit("orange", 1.2)); boolean result1 = compareLists(list1, list2, "name"); System.out.println(result1); // true List<Fruit> list3 = new ArrayList<>(); list3.add(new Fruit("apple", 1.5)); list3.add(new Fruit("kiwi", 1.8)); list3.add(new Fruit("orange", 1.2)); boolean result2 = compareLists(list1, list3, "name"); System.out.println(result2); // false } // 示例类 public class Fruit { private String name; private double weight; public Fruit(String name, double weight) { this.name = name; this.weight = weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } } ``` 这段代码会先判断list的长度是否相等,如果不相等,则直接返回false。如果长度相等,则遍历这list中的所有元素,根据传入的property属性来比较它们是否相等。在Java中,我们需要使用反射来获取对象的属性值,因此代码稍微有些复杂。如果个属性值相等,则返回true,否则返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值