您的位置:首页 > 其它

有关List查找的问题

2016-03-14 16:12 288 查看
/**
* 高效率查找相同的元素或者不同的元 效率相对于最高的
*
* @param list1
* @param list2
* @return
*/
public static List<String> getDiffrent(List<String> list1,
List<String> list2) {
Map<String, Integer> map = new HashMap<String, Integer>(list1.size()
+ list2.size());
List<String> diff = new ArrayList<String>();// 存放不同的元素
List<String> diffs = new ArrayList<String>();// 存放相同的元素
List<String> maxList = list1;
List<String> minList = list2;
if (list2.size() > list1.size()) {
maxList = list2;
minList = list1;
}
for (String string : maxList) {
map.put(string, 1);
}
for (String string : minList) {
Integer cc = map.get(string);
if (cc != null) {
map.put(string, ++cc);
continue;
}
map.put(string, 1);
}

// 取出不同的元素
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
diff.add(entry.getKey());// //取出不同的元素
}
if (entry.getValue() >= 2) {
diffs.add(entry.getKey());// 取出相同的元素;存放相同的元素
}
}

return diff;
}

/**
* zhaohe 查找出两个List当中相同的元素
*
* @param x
* @param y
* @return
*/
public static List<String> listEqual(List<String> x, List<String> y) {
List<String> listString = null;
try {
listString = new ArrayList<String>();
for (String x1 : x) {
for (String y1 : y) {
if (x1.equals(y1) || x1 == y1) {
listString.add(y1);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return listString;
}

/**
* zhaohe 比较两个List<String>当中是否存在相同的数据 效率比较低
*
* @param x
* @param y
* @return
*/
public static boolean compareToList(List<String> x, List<String> y) {
boolean flag = false;
for (String x1 : x) {
for (String y1 : y) {
if (x1.equals(y1) || x1 == y1) {
flag = true;
break;
}
}
}
return flag;
}

/**
* 查找一个List<String> 相同的元素
*
* @return
*/
public static List<String> findSameListString(List<String> list) {
List<String> diffList = new ArrayList<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
for (String string : list) {
Integer cc = map.get(string);
if (cc != null) {
map.put(string, ++cc);
continue;
}
map.put(string, 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() >= 2) {
diffList.add(entry.getKey());// 取出相同的元素;存放相同的元素
}
}
return diffList;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: