java list 比较相同的元素

    在List中有equal()方法,但是那只是对比相同的位置上的元素是否相同。

   为了达到两个list乱序状态下依然将含有完全一样的元素视为相等。需要新写一个方法:

    

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListComp {

	private static List list1 = new ArrayList<String>();
	private static List list2 = new ArrayList<String>();

	/**
	 * @param args
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {

		list1.add("Liang");
		list1.add("wiang");

		list2.add("wiang");
		list2.add("Liang");
		list2.add("wiang");
		// list1.removeAll(list2);

		System.out.println("list1 hash");
		System.out.println(list1.hashCode());
		System.out.println("list2 hash");
		System.out.println(list2.hashCode());

		if (compare(list1, list2)) {
			System.out.println("hello");
		} else {
			System.out.println("hello kity");
		}
	}

	public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b) {

		if (a.size() != b.size())
			return false;
		Collections.sort(a);
		Collections.sort(b);
		for (int i = 0; i < a.size(); i++) {
			if (!a.get(i).equals(b.get(i)))
				return false;
		}
		return true;
	}

}

王海良@Chatopera 聊天机器人 机器学习 智能客服
Chatopera 联合创始人 & CEO,运营聊天机器人平台 https://bot.chatopera.com,让聊天机器人上线!2015年开始探索聊天机器人的商业应用,实现基于自然语言交互的流程引擎、语音识别、自然语言理解,2018年出版《智能问答与深度学习》一书。