Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加上一句「;或;串_Java_String_Arraylist - Fatal编程技术网

Java 加上一句「;或;串

Java 加上一句「;或;串,java,string,arraylist,Java,String,Arraylist,这里有一个场景,我正在解析arraylist中的一组Person对象 我需要连接arraylist中对象的所有名称(成员变量),并用“or”分隔 我尝试了一些常规的方法,在每个串联和连接的末尾添加一个“or” 从字符串末尾删除一个“或”。 我知道这不是一个好的编程 许多语言都有一个名为“join”的便捷功能。对于Java,您可以在中使用一个实现。因此,我要提出: Class person{ int name; }; 会回来吗 StringUtils.join(new String[]{

这里有一个场景,我正在解析arraylist中的一组Person对象

我需要连接arraylist中对象的所有名称(成员变量),并用“or”分隔

我尝试了一些常规的方法,在每个串联和连接的末尾添加一个“or” 从字符串末尾删除一个“或”。
我知道这不是一个好的编程

许多语言都有一个名为“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 ";
}