我正在使用myBatis 3.2.x并且遇到了我需要在一次数据库旅行中执行多个表插入的场景,
我想知道我是否可以创建一个主INSERT sql映射器文件来调用这些多表插入并节省网络旅行
我正在使用来自EMS服务器的JSON对象,而且我的周转时间比所需要的要高一些。
欢迎提供所有建议和提示。
由于 VR
答案 0 :(得分:3)
使用Collections.sort()对一个简单的循环进行排序和使用以捕获双精度数,例如:
Collections.sort(myList);
A previous = null;
for (A elem: myList) {
if (elem.compareTo(previous) == 0) {
System.err.println("Duplicate: "+elem);
}
previous = elem;
}
答案 1 :(得分:2)
假设Comparable与equals实现一致,您可以使用Set。您可以使用Set.add(..)将每个元素添加到Set中,并使用add的返回值来确定该值是否已存在于Set中并创建要返回的Set或List。
注意:如果您需要每次只返回一次,您可以将返回列表更改为一组。
List<A> duplicates(List<A> myList) {
Set<A> s = new HashSet<A>();
List<A> duplicates = new ArrayList<A>(); // change to using a Set if you want to report each duplicate item only once.
for (A item: myList) {
if (!s.add(item)) {
duplicates.add(item);
}
}
return duplicates;
}
答案 2 :(得分:1)
使用排序的改进版本(仅报告重复元素一次,我假设列表中没有null
值):
Collections.sort(myList);
A previous = null, elem = null;
for (java.util.Iterator<A> it = myList.iterator; it.hasNext(); elem = it.next()) {
if (elem.compareTo(previous) == 0) {
System.err.println("Duplicate: "+elem);
while (it.hasNext() && (elem = it.next()).compareTo(previous)) {
//loop through other values
}
}
previous = elem;
}
使用SortedSet
的版本(可能会更快一点):并纠正相同的
SortedSet<A> set = new TreeSet<>(), duplicates = new TreeSet<>();
for (A a: myList) {
if (!set.add(a)) {
duplicates.add(a);
}
}
return duplicates;//or for (A a: duplicates) System.println("Duplicate: " + a);