Java排列数组
我有以下数组:Java排列数组,java,arrays,Java,Arrays,我有以下数组: {x1, null, null, null, y1, null, null, null, z1, x2, null, null, null, y2, null, null, null, z2, x3, null, null, null, y3, null, null, null, z3} 我需要这样安排: {x1, y1, z1, x2, y2, z2, x3, y3, z3} 你能帮我吗?我不知道如何启动它。我将遵循以下步骤: 在数组中循环。将每个非空元素添加到 使用该方法
{x1, null, null, null, y1, null, null, null, z1, x2, null, null, null, y2, null, null, null, z2, x3, null, null, null, y3, null, null, null, z3}
我需要这样安排:
{x1, y1, z1, x2, y2, z2, x3, y3, z3}
你能帮我吗?我不知道如何启动它。我将遵循以下步骤:
我将遵循以下步骤:
我假设数组是指某种类型的
列表
。如果是这样,请使用迭代器,我假设x1属于Integer类:
Iterator<Integer> arrayIt = arrayIt.iterator();
while(arrayIt.hasNext()){
if(arrayIt.next() == null){
arrayIt.remove();
}
}
Iterator arrayIt=arrayIt.Iterator();
while(arrayIt.hasNext()){
if(arrayIt.next()==null){
arrayIt.remove();
}
}
如果您的数组非常大,那么如果使用
LinkedList
而不是ArrayList
来实现该数组,那么它将运行得更快。我假设数组是指某种列表。如果是这样,请使用迭代器,我假设x1属于Integer类:
Iterator<Integer> arrayIt = arrayIt.iterator();
while(arrayIt.hasNext()){
if(arrayIt.next() == null){
arrayIt.remove();
}
}
Iterator arrayIt=arrayIt.Iterator();
while(arrayIt.hasNext()){
if(arrayIt.next()==null){
arrayIt.remove();
}
}
如果您的数组非常大,那么如果使用LinkedList
而不是ArrayList
来实现该数组,它将运行得更快。前面的答案是正确的,但是如果您需要更多的快速复制,您可以执行以下操作。如果您的数据包含字符,例如,如果源数组有9*k个元素,即9、18、27,…,则此解决方案仅包含work,。。。等等(据我所知,您的阵列是这样的):
char[]source={'1','','',
' ', '2', ' ',
' ', ' ', '3',
'4', ' ', ' ',
' ', '5', ' ',
' ', ' ', '6'};
char[]target=新字符[source.length/3];
int targetIndex=0;
对于(int i=0;i
前面的答案是正确的,但是如果您需要更多的快速复制,您可以执行以下操作。如果您的数据包含字符,例如,如果源数组有9*k个元素,即9、18、27,…,则此解决方案仅包含work,。。。等等(据我所知,您的阵列是这样的):
char[]source={'1','','',
' ', '2', ' ',
' ', ' ', '3',
'4', ' ', ' ',
' ', '5', ' ',
' ', ' ', '6'};
char[]target=新字符[source.length/3];
int targetIndex=0;
对于(int i=0;i
以下是一种方法:
使用将数组转换为数组
如果null
,则为templast
中的元素
if(tempList.get(i) == null)
{
tempList.remove(i);
i--;
}
}
使用将templast
转换回数组
下面是一个完整的工作示例:
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveArrayNull
{
public static void main(String[] args)
{
Object[] objects = new Object[] {new Object(), null, null, new Object(), null};
objects = removeNull(objects);
System.out.println(Arrays.toString(objects));
}
static Object[] removeNull(Object[] objects)
{
List<Object> tempList = new ArrayList(Arrays.asList(objects));
for(int i = 0; i < tempList.size(); i++)
{
if(tempList.get(i) == null)
{
tempList.remove(i);
i--;
}
}
return tempList.toArray();
}
}
import java.util.List;
导入java.util.ArrayList;
导入java.util.array;
公共类RemoveArrayNull
{
公共静态void main(字符串[]args)
{
Object[]objects=new Object[]{new Object(),null,null,new Object(),null};
对象=移除全部(对象);
System.out.println(array.toString(objects));
}
静态对象[]removeNull(对象[]对象)
{
List templast=newarraylist(Arrays.asList(objects));
对于(int i=0;i
以下是一种方法:
使用将数组转换为数组
如果null
,则为templast
中的元素
if(tempList.get(i) == null)
{
tempList.remove(i);
i--;
}
}
使用将templast
转换回数组
下面是一个完整的工作示例:
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveArrayNull
{
public static void main(String[] args)
{
Object[] objects = new Object[] {new Object(), null, null, new Object(), null};
objects = removeNull(objects);
System.out.println(Arrays.toString(objects));
}
static Object[] removeNull(Object[] objects)
{
List<Object> tempList = new ArrayList(Arrays.asList(objects));
for(int i = 0; i < tempList.size(); i++)
{
if(tempList.get(i) == null)
{
tempList.remove(i);
i--;
}
}
return tempList.toArray();
}
}
import java.util.List;
导入java.util.ArrayList;
导入java.util.array;
公共类RemoveArrayNull
{
公共静态void main(字符串[]args)
{
Object[]objects=new Object[]{new Object(),null,null,new Object(),null};
对象=移除全部(对象);
System.out.println(array.toString(objects));
}
静态对象[]removeNull(对象[]对象)
{
List templast=newarraylist(Arrays.asList(objects));
对于(int i=0;i
最好的方法是依靠现成的java方法,因为这些方法是正确创建和测试的。
数据类型虽然在您指定的数组中不清楚,但我将其视为字符串
代码:-
String[]elements=新字符串[]{“x1”,null,null,null,“y1”,null,null,null,“z1”,“x2”,null,null,null,null,“y2”,null,null,null,null,“z2”,“x3”,null,null,null,null,“z3”};
Set=newhashset(Arrays.asList(elements));
set.remove(空);
最好的方法是依靠现成的java方法,因为这些方法是正确创建和测试的。
数据类型虽然在您指定的数组中不清楚,但我将其视为字符串
代码:-
String[]elements=新字符串[]{“x1”,null,null,null,“y1”,null,null,null,“z1”,“x2”,null,null,null,null,“y2”,null,null,null,null,“z2”,“x3”,null,null,null,null,“z3”};
Set=newhashset(Arrays.asList(elements));
set.remove(空);
迭代数组,如果元素为null,则将其删除。迭代数组,如果元素为null,则将其删除。但是哈希集
是无序的,这也将消除重复的no
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveArrayNull
{
public static void main(String[] args)
{
Object[] objects = new Object[] {new Object(), null, null, new Object(), null};
objects = removeNull(objects);
System.out.println(Arrays.toString(objects));
}
static Object[] removeNull(Object[] objects)
{
List<Object> tempList = new ArrayList(Arrays.asList(objects));
for(int i = 0; i < tempList.size(); i++)
{
if(tempList.get(i) == null)
{
tempList.remove(i);
i--;
}
}
return tempList.toArray();
}
}
String []elements = new String[]{"x1", null, null, null, "y1", null, null, null, "z1", "x2", null, null, null, "y2", null, null, null, "z2", "x3", null, null, null, "y3", null, null, null, "z3"};
Set<String> set = new HashSet<String>(Arrays.asList(elements));
set.remove(null);