连接由 Pipe 和 ':' 分隔的整数值使用java

发布于 2024-09-15 11:32:22 字数 266 浏览 1 评论 0原文

我有 ValueA 和 ValueB(int type) 数组。我正在使用 for 循环从数组中读取每个值。 我想将所有值连接到一个字符串中。这些值应该是这样的形式,

ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|"....  

我想要在Java中使用这个,请一些人帮助我编写代码..

I have array of ValueA and ValueB(int type) . I am reading each value from array using a for loop.
I want to concatenate all there values in a single String. these value should be in the form of like these

ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|"....  

I want this in Java, please can some ne help me with code..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

断念 2024-09-22 11:32:22

您可以尝试这样的方法

int[] valueA = methodWhichFillsA();
int[] valueB = methodWhichFillsB();
StringBuilder sb = new StringBuilder();
int maxSize = Math.max(valueA.length, valueB.length);
for(int i = 0; i < maxSize; i++){
    if(i > 0)
        sb.append("|");

    if(i < valueA.length)
        sb.append(valueA[i]);

    sb.append(":");

    if(i < valueB.length)
        sb.append(valueB[i]);
}
System.out.println(sb.toString());

这将评估 valueA 和 valueB 之间最大数组的大小,并在此大小上循环。如果该元素存在,则会打印该元素。
第一个if用于添加分隔符,如果是第一次迭代则不需要“|”

You could try something like this

int[] valueA = methodWhichFillsA();
int[] valueB = methodWhichFillsB();
StringBuilder sb = new StringBuilder();
int maxSize = Math.max(valueA.length, valueB.length);
for(int i = 0; i < maxSize; i++){
    if(i > 0)
        sb.append("|");

    if(i < valueA.length)
        sb.append(valueA[i]);

    sb.append(":");

    if(i < valueB.length)
        sb.append(valueB[i]);
}
System.out.println(sb.toString());

This will evaluate the size of the biggest array between valueA and valueB, loop on this size. If the element exists it's printed.
The first if is used to add the separator, if it's the first iteration no need for a "|"

清引 2024-09-22 11:32:22

假设数组大小不同,此解决方案会将它们压缩在一起,直到较短数组的末尾:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){
    sb.append( arr1[i] ).append("\":\"").append( arr2[i] ).append("\"|\"");
}
System.out.println(sb.toString());

Assuming the arrays are of different size, this solution will zip them together up until the end of the shorter array:

StringBuilder sb = new StringBuilder();
for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){
    sb.append( arr1[i] ).append("\":\"").append( arr2[i] ).append("\"|\"");
}
System.out.println(sb.toString());
泪意 2024-09-22 11:32:22

只是一种不同的方法,它使用 Guava

private String test(int[] a, int[] b) {

    List<Integer> al = Lists.newArrayList();
    List<Integer> bl = Lists.newArrayList();
    for (Integer ai : a) {
        al.add(ai);
    }
    for (Integer bi : b) {
        bl.add(bi);
    }

    List<String> sets = Lists.newArrayList();
    Iterator<Integer> itera = al.iterator();
    Iterator<Integer> iterb = bl.iterator();
    while(itera.hasNext() && iterb.hasNext()) {
        sets.add(itera.next()+":"+iterb.next());
    }

    return Joiner.on("|").join(sets);

}

我很惊讶地发现没有原始数组来列出方法。如果您能想到一种优雅的方法来做到这一点,除了将其取出到另一个方法中之外,那么该代码可以变得更干净。

Just a different way of doing it, this uses Guava

private String test(int[] a, int[] b) {

    List<Integer> al = Lists.newArrayList();
    List<Integer> bl = Lists.newArrayList();
    for (Integer ai : a) {
        al.add(ai);
    }
    for (Integer bi : b) {
        bl.add(bi);
    }

    List<String> sets = Lists.newArrayList();
    Iterator<Integer> itera = al.iterator();
    Iterator<Integer> iterb = bl.iterator();
    while(itera.hasNext() && iterb.hasNext()) {
        sets.add(itera.next()+":"+iterb.next());
    }

    return Joiner.on("|").join(sets);

}

I was surprised to find no primitive array to list methods. If you can think of an elegant way to do that besides pulling it out into another method, the this code could be made cleaner.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文