我正在学习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
答案 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
的示例