先将字符串转换成字符数组,然后用LinkedList将字符数组中的每个值用循环添加进去!例如:
String str = "sdfsdf";
Character cha[] = str.toCharArray;//将字符串转为字符数组
LinkedList link = new LinkedList();//声明一个双向链表的引用
for(i = 0;i<cha.length();i++){//循环将字符数组中的值加入链表中
link.add(i,(String)cha[i].toString());
}
以上是我的思路,如果有错误还请高手们指点!
代码没有调试过,全凭记忆写的,希望对楼主有所帮助!!
String str = "sdfsdf";
Character cha[] = str.toCharArray;//将字符串转为字符数组
LinkedList link = new LinkedList();//声明一个双向链表的引用
for(i = 0;i<cha.length();i++){//循环将字符数组中的值加入链表中
link.add(i,(String)cha[i].toString());
}
以上是我的思路,如果有错误还请高手们指点!
代码没有调试过,全凭记忆写的,希望对楼主有所帮助!!
char[] cha = str.toCharArray();//将字符串转为字符数组
LinkedList link = new LinkedList();//声明一个双向链表的引用
for(i = 0;i<cha.length;i++){//循环将字符数组中的值加入链表中
link.add(i, String.valueOf(cha[i]));
}
因为向LinkedList add只能是Object 而不能是char等primary type。
虽然 LinedList 是双向链表实现的,但是好像它没有提供相关的方法让我们像操作双向链表一样的操作它。package jamesfancy;/**
* MyList
*
* @author James
*/
public class CharList { CharNode first;
CharNode last; public void add(char ch) {
CharNode node = new CharNode(ch);
if (first == null) {
first = node;
last = node;
} else {
node.setPrevious(last);
last.setNext(node);
last = node;
}
}
public void printList() {
CharNode node = first;
StringBuffer buffer = new StringBuffer();
if (node != null);
buffer.append(node.getData());
node = node.getNext();
while (node != null) {
buffer.append(',');
buffer.append(node.getData());
node = node.getNext();
}
System.out.println(buffer);
}
public final static void main(String[] args) {
String s = "James Fancy";
CharList list = new CharList();
for (int i = 0; i < s.length(); ++i) {
list.add(s.charAt(i));
}
list.printList();
}}class CharNode { private char data;
private CharNode next;
private CharNode previous; public CharNode(char ch) {
this.data = ch;
} public char getData() {
return data;
} public CharNode getNext() {
return next;
} public CharNode getPrevious() {
return previous;
} public void setData(char data) {
this.data = data;
} void setNext(CharNode next) {
this.next = next;
} void setPrevious(CharNode previous) {
this.previous = previous;
}
}
应该改为link.add(i,(cha[i]+""));
然后,你自己定义一个数据结构,如
CharNode {
char data;
String type;
}
然后添加和取出的时候都转型为 Object 型进行
添加的时候系统会自动转型,取出的时候需要强制
即 ObjectNode node = ...
CharNode cn = (CharNode) node.data;
这样
* @(#) ObjectList.java
* Created on 2004-10-18
* Created by James Fancy
*/
package jamesfancy;/**
* MyList
*
* @author James
*/
public class ObjectList { ObjectNode first;
ObjectNode last; public void add(Object obj) {
ObjectNode node = new ObjectNode(obj);
if (first == null) {
first = node;
last = node;
} else {
node.setPrevious(last);
last.setNext(node);
last = node;
}
} public void printList() {
ObjectNode node = first;
StringBuffer buffer = new StringBuffer();
if (node != null)
;
buffer.append(node.getData());
node = node.getNext();
while (node != null) {
buffer.append(',');
buffer.append(node.getData().toString());
node = node.getNext();
}
System.out.println(buffer);
} public final static void main(String[] args) {
String s = "James Fancy";
ObjectList list = new ObjectList();
for (int i = 0; i < s.length(); ++i) {
list.add(new Character(s.charAt(i)));
}
list.printList(); // 如果你需要保存其它类型的数据比如下面定义的 MyObject
list = new ObjectList();
for (int i = 0; i < s.length(); ++i) {
list.add(new MyObject(s.charAt(i), (int) s.charAt(i)));
}
list.printList();
}}class ObjectNode { private Object data;
private ObjectNode next;
private ObjectNode previous; public ObjectNode(Object obj) {
this.data = obj;
} public Object getData() {
return data;
} public ObjectNode getNext() {
return next;
} public ObjectNode getPrevious() {
return previous;
} public void setData(Object obj) {
this.data = obj;
} void setNext(ObjectNode next) {
this.next = next;
} void setPrevious(ObjectNode previous) {
this.previous = previous;
}
}class MyObject {
protected char data;
protected int attr; private String toString; public MyObject(char data, int attr) {
this.data = data;
this.attr = attr;
} public String toString() {
if (toString == null) {
StringBuffer buffer = new StringBuffer(10);
buffer.append(data);
buffer.append('[');
buffer.append(attr);
buffer.append(']');
toString = buffer.toString();
}
return toString;
}
}