Java 加上一句「;或;串
这里有一个场景,我正在解析arraylist中的一组Person对象 我需要连接arraylist中对象的所有名称(成员变量),并用“or”分隔 我尝试了一些常规的方法,在每个串联和连接的末尾添加一个“or” 从字符串末尾删除一个“或”。Java 加上一句「;或;串,java,string,arraylist,Java,String,Arraylist,这里有一个场景,我正在解析arraylist中的一组Person对象 我需要连接arraylist中对象的所有名称(成员变量),并用“or”分隔 我尝试了一些常规的方法,在每个串联和连接的末尾添加一个“or” 从字符串末尾删除一个“或”。 我知道这不是一个好的编程 许多语言都有一个名为“join”的便捷功能。对于Java,您可以在中使用一个实现。因此,我要提出: Class person{ int name; }; 会回来吗 StringUtils.join(new String[]{
我知道这不是一个好的编程 许多语言都有一个名为“join”的便捷功能。对于Java,您可以在中使用一个实现。因此,我要提出:
Class person{
int name;
};
会回来吗
StringUtils.join(new String[]{"a", "b", "c"}, ":");
此方法的一些变体可以处理集合和数组
您可以使用commons集合的CollectionUtils.collect方法从人员中获取姓名,然后将其传递给join
使用番石榴而不是apache commons可能是个好主意 这确实是一条路要走。我假设您有一个arraylist,因为您标记了它,您可以使用:
"a:b:c"
String.split、join没有对应项。不过还有org.apache.commons.lang.StringUtils.join。自己动手,使用StringBuilder。在构造函数中,您可以猜测初始容量。在长度()上签入循环!=0,或在循环后删除或设置长度。然后可能修剪尺寸。实际问题是,问题的解决方案本身远远不是最优的。但这就是生活
在SQL中,“name In(…,…)”也可以代替OR。为什么不可以?如果有效的话。。。另一种方法是在循环中使用索引,每次都检查它是否是最后一个索引。如果是最后一个条目,不要加上“或”。谁的名字有数字?@AshBurlaczenko可能是某个标识符。“听起来他好像在构造一个查询,可能是SQL。”我的一个朋友AshBurlaczenko把他的名字改为“四”。在罗马历史的某些时期,除了第一个儿子以外,其他儿子的名字通常都能反映他们的出生顺序,例如,干净的溶液,良好使用
hasNext
。可能需要使用StringBuilder而不是StringBuffer,因为并发性不是问题。
public static String join(Collection data, String delimiter) {
final StringBuffer buffer = new StringBuffer();
final Iterator iter = data.iterator();
while (iter.hasNext()) {
buffer.append(iter.next());
if (iter.hasNext()) {
buffer.append(delimiter);
}
}
return buffer.toString();
}
// in your code:
join(personList, " or ");
String separator = "";
StringBuilder sb = new StringBuilder();
for (Person person : listOfPersons) {
sb.append(separator).append(person.getName());
separator = " OR ";
}