从电子表格插入到数据库时,我有已经存在的行。所以我需要在插入之前检查现有的行。我是用Java做的。 在电子表格中我有:
name
a
b
c
d
b
数据库dbo.emp有:
name id
x 1
y 2
z 3
d 4
重复行。要查找重复的行,我需要搜索arraylist。所以我查询excel和sql数据库。我将通过查询Excel工作表获得的结果放入arraylist namexcel中。通过查询dbo.emp到arraylist namedb获得的结果。 现在我需要搜索二进制搜索中存在的哪些行。 我写了查询并存储如下:
String ExcelQueryString2 = "select * from [Sheet1$]";
ResultSet SpreadsheetValues = stmt2.executeQuery(ExcelQueryString2);
List namexcel = new ArrayList();
while (SpreadsheetValues.next()) {
namexcel.add(SpreadsheetValues.getString("name"));}
String Querystring="SELECT Name from dbo.emp"
List namedb = new ArrayList();
ResultSet rs = statement.executeQuery(Querystring);
while(rs.next())
{
namedb .add(rs.getString("Name"));
}
我的问题:
请提供代码段。
答案 0 :(得分:0)
二进制搜索要求您维护ArrayList
已排序,并使用Collections.binarySearch()
进行搜索。
你可能想要使用Set
来改造 - 这保证了没有重复作为其行为的一部分
答案 1 :(得分:0)
您可以考虑使用LinkedHashSet
,这可以确保在添加数据时不会重复数据,同时保持插入顺序。
答案 2 :(得分:0)
您可以使用当前的两个列表创建集合实现。然后你可以使用这个链接中使用的set difference方法。
实际上你不需要去二元搜索。在将列表传递给二进制搜索功能之前,您需要对其进行排序。这是一项代价高昂的行动。