越来越多的原始数组在java中

时间:2015-01-21 17:01:43

标签: java arrays

我正在学习Android,同时提高我的效率知识。我正在编写一个密码生成器,它使用特定规则从一组字符生成随机密码。我有一个数组,我打算存储字符。数组的大小为X,这是所有情况下可能的字符数。然后,我向阵列添加最多三组附加字符。由于我无法调整数组的大小,因此每次使用复制循环或ArrayCopy或类似工具时,我都必须复制并重新创建它。

我应该这样做还是切换到例如ArrayList?当然,在现实生活中也不会出现问题,因为总共会有大约70个字符,但我对此感兴趣。

感谢所有人。

伪代码:

initialize array  
add first set  
if adding second set  
    add second set  
if adding third set  
    add third set  
if adding fourth set  
    add fourth set  
return array

3 个答案:

答案 0 :(得分:5)

切换到集合(就像你提到的ArrayList一样),因为它会比创建一个新数组并复制每个插入的值(如果你使用数组必须要做的那样,效率要高得多),因为你注意到,数组在创建时是静态大小的。)

ArrayList Javadoc说(部分),

  

List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组的大小。

答案 1 :(得分:2)

使用ArrayList而不是原始数组,然后当您拥有ArrayList中的所有值(将增长)时,您可以将其转换为原始数组,如下所示:

 List<Character> l = new ArrayList<Character>();
 ...
 l.toArray();

答案 2 :(得分:0)

您可以使用ArrayList,因为在添加或删除项目时会自动调整其大小。

import java.util.*;

public class ArrayListDemo {
public static void main(String args[]) {
  // create an array list
  ArrayList al = new ArrayList();
  System.out.println("Initial size of al: " + al.size());

  // add elements to the array list
  al.add("C");
  al.add("A");
  al.add("E");
  al.add("B");
  al.add("D");
  al.add("F");
  al.add(1, "A2");
  System.out.println("Size of al after additions: " + al.size());

  // display the array list
  System.out.println("Contents of al: " + al);
  // Remove elements from the array list
  al.remove("F");
  al.remove(2);
  System.out.println("Size of al after deletions: " + al.size());
  System.out.println("Contents of al: " + al);
  }
  }

取自http://www.tutorialspoint.com/java/java_arraylist_class.htm

的示例