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

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);