将ArrayList转换为LinkedList

bon*_*007 1 java linked-list arraylist

如果我想改变在这个实现ArrayListLinkedList做我只需要改变

ArrayList<Character> characters = new ArrayList<Character>();
Run Code Online (Sandbox Code Playgroud)

LinkedList<Character> characters = new List<Character>();
Run Code Online (Sandbox Code Playgroud)

或者我该怎么做?

ArrayList<Character> characters = new ArrayList<Character>();
try {
    while((str = bufferedReader.readLine()) != null){
        char [] characterArray = str.toCharArray();

        for (int i = 0; i <  characterArray.length; i++){

            characters.add(characterArray[i]);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}
char [] patternArray = phrase.toCharArray();
ArrayList<Character> pattern = new ArrayList<Character>();
for (int i = 0; i <  patternArray.length; i++) {

    pattern.add(patternArray[i]);
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 7

这段代码很好地说明了为什么编程接口是一件好事.你继续使用这个声明模式:

ArrayList<Character> characters = new ArrayList<Character>();
Run Code Online (Sandbox Code Playgroud)

如果您想制作characters链表,则必须在两个地方进行更改.如果您使用了声明的接口名称,就像这样

List<Character> characters = new ArrayList<Character>();
Run Code Online (Sandbox Code Playgroud)

您的其余代码将继续工作,但您可以进行一次更改以转换为LinkedList:

List<Character> characters = new LinkedList<Character>();
Run Code Online (Sandbox Code Playgroud)

声明pattern变量也是如此.

它太慢并且使用太多内存

当然有!长链接列表会占用更多内存,因此将它们用于逐个字符的表示是不切实际的.通常,只有在处理少量短字符串时,字符串到字符列表的转换才是实用的.在其他情况下String,StringBuilder如果需要可变性,最好使用对象或对象.

  • @bond007 - 这可能意味着你应该坚持使用 `ArrayList` 而不是改用 `LinkedList`。 (2认同)