Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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_List - Fatal编程技术网

在java中压缩字符串列表

在java中压缩字符串列表,java,list,Java,List,压缩字符串列表最简单/最快捷的方法是什么,类似于: john,barry,stewart,josh,30,45,23,56 String[] parts = input.split(","); int halfLength = parts.length / 2; for (int i = 0; i < halfLength; i++) { String name = parts[i]; String age = parts[i + halfLength]; //

压缩字符串列表最简单/最快捷的方法是什么,类似于:

john,barry,stewart,josh,30,45,23,56
String[] parts = input.split(",");
int halfLength = parts.length / 2;
for (int i = 0; i < halfLength; i++) {
    String name = parts[i];
    String age = parts[i + halfLength];
    // Store them in whatever structure you want here
}
我希望订单是

john,30,barry,45,stewart,23,josh,56

我知道这听起来像是家庭作业,但实际列表在一些selenium代码中使用,并在页面上存储URL和单选按钮选项,但我认为上面的示例更容易阅读。

这里您需要执行一些手动代码

首先将所有字符串和整数分别分散,得到两个列表

然后迭代一个列表,将这两个列表添加到一个最终列表中,就像第一个字符串和


然后是整数。

这里您需要执行一些手动代码

首先将所有字符串和整数分别分散,得到两个列表

然后迭代一个列表,将这两个列表添加到一个最终列表中,就像第一个字符串和


然后是整数。

看起来你只是想把数字和字母数字交织在一起。我只需扫描列表以找到第一个数字的索引,然后创建一个新列表,并将第一个字母和第一个数字添加到新列表中,然后添加第二个字母和第二个数字。这不是排序,O(n)

也不是排序,似乎你只是想把数字和字母数字交织在一起。我只需扫描列表以找到第一个数字的索引,然后创建一个新列表,并将第一个字母和第一个数字添加到新列表中,然后添加第二个字母和第二个数字。这不是排序,O(n)

这里需要的是函数式语言中的
zip
函数

我可以帮你


相关:

这里需要的是一个类似于函数式语言的
zip
函数

我可以帮你

相关:

看起来像两个列表

首先生成两个列表并创建一个新的结果列表

Pseudocode :

list = Arrays.AsList(string.split("\\s+"))

list1 = list.sublist(0, list.size() /2 );
list2 = list.sublist(list.size() /2 +1 , list.size());

for(int i = 0;i<list1.size() ; i++ ) {
   resultlist.add(list1.get(i);
   resultlist.add(list2.get(i);
}
return resultlist
伪代码:
list=Arrays.AsList(string.split(\\s+))
list1=list.sublist(0,list.size()/2);
list2=list.sublist(list.size()/2+1,list.size());
for(int i=0;i看起来像两个列表

首先生成两个列表并创建一个新的结果列表

Pseudocode :

list = Arrays.AsList(string.split("\\s+"))

list1 = list.sublist(0, list.size() /2 );
list2 = list.sublist(list.size() /2 +1 , list.size());

for(int i = 0;i<list1.size() ; i++ ) {
   resultlist.add(list1.get(i);
   resultlist.add(list2.get(i);
}
return resultlist
伪代码:
list=Arrays.AsList(string.split(\\s+))
list1=list.sublist(0,list.size()/2);
list2=list.sublist(list.size()/2+1,list.size());

对于(int i=0;i我会做类似的事情:

john,barry,stewart,josh,30,45,23,56
String[] parts = input.split(",");
int halfLength = parts.length / 2;
for (int i = 0; i < halfLength; i++) {
    String name = parts[i];
    String age = parts[i + halfLength];
    // Store them in whatever structure you want here
}
String[]parts=input.split(“,”);
int half length=parts.length/2;
对于(int i=0;i
我会做类似的事情:

john,barry,stewart,josh,30,45,23,56
String[] parts = input.split(",");
int halfLength = parts.length / 2;
for (int i = 0; i < halfLength; i++) {
    String name = parts[i];
    String age = parts[i + halfLength];
    // Store them in whatever structure you want here
}
String[]parts=input.split(“,”);
int half length=parts.length/2;
对于(int i=0;i
你的问题听起来像是你需要代码来修复一个糟糕的设计。因此,我想退一步问这个问题,列表是如何显示的

john,barry,stewart,josh,30,45,23,56
创建时,您显然需要:

(john, 30), (barry, 45), (stewart, 23), (josh, 56)

(将
(x,y)
符号替换为您最喜欢的元组类型。)

您的问题听起来像是需要代码来修复一个糟糕的设计。因此,我想退一步,问一个问题,列表是如何生成的

john,barry,stewart,josh,30,45,23,56
创建时,您显然需要:

(john, 30), (barry, 45), (stewart, 23), (josh, 56)
(将
(x,y)
符号替换为您最喜欢的元组类型。)

尝试以下方法: 1.首先对其排序-数字将覆盖列表的一半,名称将覆盖列表的一半。 2.创建两个长度为一半的数组:sArr1和sArr2。在sArr1中存储数字,在sArr2中存储名称。 3.通过将两个数组中的数字和名称交替放入原始数组来合并它们

import java.util.Arrays;


public class SortMix {
    public static void main(String[] args) {
        String sArr[] = {"john","barry","stewart","josh","30","45","23","56"};
        Arrays.sort(sArr);
        display(sArr);

        String sArr1[] = new String[sArr.length/2];
        for(int i=0;i<sArr.length/2;i++) 
            sArr1[i] = sArr[i];
        display(sArr1);

        String sArr2[] = new String[sArr.length/2];
        for(int i=0;i<sArr.length/2;i++)
            sArr2[i] = sArr[i+sArr.length/2];
        display(sArr2);

        int k=0;
        int l=0;
        for(int i=0;i<sArr.length;i++) {
            if(i%2==0){ 
                sArr[i]=sArr1[k];
                k++;    
            } else {
                sArr[i]=sArr2[l];
                l++;
            }
        }
        display(sArr);
    }

    public static void display(String[] sArr) {
        for(int i=0;i<sArr.length;i++) 
            System.out.print(sArr[i] + " ");
        System.out.println();
    }
}
试着这样做: 1.首先对其排序-数字将覆盖列表的一半,名称将覆盖列表的一半。 2.创建两个长度为一半的数组:sArr1和sArr2。在sArr1中存储数字,在sArr2中存储名称。 3.通过将两个数组中的数字和名称交替放入原始数组来合并它们

import java.util.Arrays;


public class SortMix {
    public static void main(String[] args) {
        String sArr[] = {"john","barry","stewart","josh","30","45","23","56"};
        Arrays.sort(sArr);
        display(sArr);

        String sArr1[] = new String[sArr.length/2];
        for(int i=0;i<sArr.length/2;i++) 
            sArr1[i] = sArr[i];
        display(sArr1);

        String sArr2[] = new String[sArr.length/2];
        for(int i=0;i<sArr.length/2;i++)
            sArr2[i] = sArr[i+sArr.length/2];
        display(sArr2);

        int k=0;
        int l=0;
        for(int i=0;i<sArr.length;i++) {
            if(i%2==0){ 
                sArr[i]=sArr1[k];
                k++;    
            } else {
                sArr[i]=sArr2[l];
                l++;
            }
        }
        display(sArr);
    }

    public static void display(String[] sArr) {
        for(int i=0;i<sArr.length;i++) 
            System.out.print(sArr[i] + " ");
        System.out.println();
    }
}

邮政编码的通用版本:

@SafeVarargs
public static <T> ArrayList<T> zip(Iterable<T>  ...iterables) {
    ArrayList<Iterator<T>> is = new ArrayList<>(iterables.length);
    for (int i=0; i<iterables.length; i++) {
        is.add(iterables[i].iterator());
    }
    ArrayList<T> al = new ArrayList<>();
    while (is.get(0).hasNext()) {
        for (int i=0; i<is.size(); i++) {
            // FIXME: could check for shorter-than-expected sublists here
            al.add(is.get(i).next());
        }
    }
    return al;
}
@SafeVarargs
公共静态ArrayList zip(Iterable…iterables){
ArrayList is=新的ArrayList(iterables.length);

对于(int i=0;i邮政编码的通用版本):

@SafeVarargs
public static <T> ArrayList<T> zip(Iterable<T>  ...iterables) {
    ArrayList<Iterator<T>> is = new ArrayList<>(iterables.length);
    for (int i=0; i<iterables.length; i++) {
        is.add(iterables[i].iterator());
    }
    ArrayList<T> al = new ArrayList<>();
    while (is.get(0).hasNext()) {
        for (int i=0; i<is.size(); i++) {
            // FIXME: could check for shorter-than-expected sublists here
            al.add(is.get(i).next());
        }
    }
    return al;
}
@SafeVarargs
公共静态ArrayList zip(Iterable…iterables){
ArrayList is=新的ArrayList(iterables.length);

对于(int i=0;i这种排序行为的规则是什么?这种顺序看起来完全随意。你能描述一下这种排序背后的想法吗?为什么
john
30
之前,而
barry
之前?这看起来更像是将两个列表压缩为一个。也许我应该使用真正的selenium示例:P我是列表在一个方法中返回有一堆URL,它从一个页面中获取,然后在该方法中,我转到这些URL并根据是否单击单选按钮来存储true或false。然后,我有另一个方法将所有内容设置回测试前的状态,这样如果我的列表是有序的,就更容易了,因此我将有一个带有该值的URL我仍然不知道排序标准是什么…在尝试询问其他人之前,先尝试理解您的问题,如果您理解的比重复一个示例更好,请重新表述问题…如果我看它,它甚至看起来不像排序,而不仅仅是用一个字符串、一个数字重新排列它们各自组出现的顺序。这种排序行为的规则是什么?这种顺序看起来完全随意。你能描述一下这种排序背后的想法吗?为什么
john
出现在
30
之前,而
barry
之前?这看起来更像是将两个列表压缩成一个。也许我应该使用真实的selenium示例:P我在一个方法中返回的列表有一堆URL,它是从一个页面获取的,然后在该方法中,我转到这些URL并存储true或false,具体取决于