我想知道是否有可能在select *
中执行值String[]
,或者我是否需要首先从字符串数组构建一串值?
我试图在没有单一选择或从数组中构建一串值的技术上找到最佳方法。
感谢您的时间。
String[] lookupValues = new String[]{"1", "2", "3", "4"};
Select * from database where value in (lookupvalues)
答案 0 :(得分:1)
尝试Arrays.toString(lookupvalues)
或编写实用程序功能。
public String toString(String[] values, boolean addQuotes) {
StringBuilder buff = new StringBuilder();
for(String value : values) {
if(addQuotes) {
buff.append(String.format("\"%s\"", value)).append(",");
} else {
buff.append(value).append(",");
}
}
buff.deleteCharAt(buff.length()-1); // delete the last comma
return buff.toString();
}
答案 1 :(得分:0)
我知道这不仅仅是考虑阵列的问题的直接答案。我建议您使用Guava,因为它提供了对Java Collection
的过滤器实现。如果使用不同类型的过滤器,使用经过验证的库将为您提供灵活性。
您可以轻松地将阵列转换为正确的集合
String[] lookupValues = new String[]{"1", "2", "3", "4"};
List<String> list = new ArrayList<String>(Arrays.asList(lookupValues));
使用番石榴过滤器过滤它:
Collection<String> filtered = Collections2.filter(list,
Predicates.containsPattern("3"));
print(filtered);
会找到
3
如果您希望过滤集合作为列表,您可以使用Guava中的类似内容:
List<String> filteredList = Lists.newArrayList(Collections2.filter(
list, Predicates.containsPattern("3")));
答案 2 :(得分:0)
您是否希望在数组中搜索字符串?如果是,您可能希望查看Collections.binarySearch()
或Arrays.binarySearch()
- 但请注意,在进行二进制搜索之前,需要对集合或数组进行排序