【问题标题】:Java - How do I split an array into four separate arrays?Java - 如何将一个数组拆分为四个单独的数组?
【发布时间】:2012-03-29 03:06:54
【问题描述】:

我有一个数组,其中包含一串数字,例如:1011

我想将其拆分为四个单独的数组,其中包含每个值。我该怎么做?

String [] array = {1,0,1,1}; 

//would I do something like this:

array.substring(0,4)

【问题讨论】:

  • 只使用array[0], array[1], array[2], array[3]有什么问题?
  • 这是一个计算机架构项目,每个数组代表一个二进制数。最后我需要能够对这些进行逻辑操作,我能想到的唯一方法就是像这样拆分一个数组
  • 文字 '1' 与 String 类型不兼容。你的意思是“1”,“0”,“1”,“1”还是你的意思是数组的类型是'int'?

标签: java string split substring


【解决方案1】:

您应该可以使用Arrays.copyOfRange(...) 来执行此操作。

【讨论】:

    【解决方案2】:

    没有拆分 afaik,但您可以使用范围将其复制到新数组中

    查看copyOfRange

    static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)
    

    用法如下:

    String [] array = {1,0,1,1}; 
    // Copies from element 0 to 0
    String[] array1 = Arrays.copyOfRange(array, 0, 0);
    

    【讨论】:

      【解决方案3】:
      public static void main(String[] args) {
        int[] array = {1,0,1,1}; 
          int[] array1 = Arrays.copyOfRange(array, 0, 1);
          int[] array2 = Arrays.copyOfRange(array, 1, 2);
          int[] array3 = Arrays.copyOfRange(array, 2, 3);
          int[] array4 = Arrays.copyOfRange(array, 3, 4);
          System.out.println(array1[0]);
          System.out.println(array2[0]);
          System.out.println(array3[0]);
          System.out.println(array4[0]);
      }
      

      【讨论】:

        【解决方案4】:

        选项 1 是简单地为您拥有的数组中的每个项目创建一个新数组...通常可以这样完成:

        public <T> List<T[]> splitEachItemIntoOwnArray(T[] original) {
          List<T[]> result = new ArrayList<T[]>();
          if (original == null) return result;
        
          for (T t : original) {
            result.add((T[])new Object[] {t});
          }
        
          return result;
        }
        

        选项 2,您也可以通过 Arrays.copyOfRange() 方法实现这一点:

        public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original) {
            List<T[]> result = new ArrayList<T[]>();
            if (original == null) return result;
        
            for (int i = 0; i < original.length; i++) {
                result.add(Arrays.copyOfRange(original,i,i+1));
            }
        
            return result;
        }
        

        如果您总是希望原始数组的每个项目都拆分为自己的数组,则选项 1 和 2 有效。如果您可能希望将原始数组的每 N 个项目拆分为自己的项目,这应该可以:

        public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original, int size) {
            List<T[]> result = new ArrayList<T[]>();
            if (original == null) return result;
        
            int curPos = 0;
            while (curPos < original.length) {
                int remaining = original.length - curPos+1;
                if (remaining <= size) {
                    result.add(Arrays.copyOfRange(original,curPos,original.length));
                } else {
                    result.add(Arrays.copyOfRange(original,curPos,curPos+size));
                }
                curPos += size;
            }
        
            return result;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多