在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,具体取决于