Java 使用listIterator遍历和替换字符值的双链接列表
我需要遍历一个双链接的字符列表。我需要用一个“!”替换列表中的每个大写字母“Y”然后,向后遍历,在创建的同一列表迭代器中用“”替换每个“M”。如果你需要更多的上下文来回答这个问题,我会补充更多,但现在这不是很长的解释 到目前为止我的代码:Java 使用listIterator遍历和替换字符值的双链接列表,java,data-structures,doubly-linked-list,Java,Data Structures,Doubly Linked List,我需要遍历一个双链接的字符列表。我需要用一个“!”替换列表中的每个大写字母“Y”然后,向后遍历,在创建的同一列表迭代器中用“”替换每个“M”。如果你需要更多的上下文来回答这个问题,我会补充更多,但现在这不是很长的解释 到目前为止我的代码: public static void main(String[] args) { KWLinkedList<Character> list = new KWLinkedList<Character>() ; String
public static void main(String[] args)
{
KWLinkedList<Character> list = new KWLinkedList<Character>() ;
String linkString = "ZekqmDXJGfaos3MPaSl8p1La.9rXEt43a=Cn#Ds72Y";
for(int i = 0; i < linkString.length();i++)
{
list.add(linkString.charAt(i));
}
ListIterator myIterator = list.listIterator(0) ;
int i = 0;
while(!myIterator.hasNext())
{
myIterator.next();
if(myIterator.equals('Y'))
{
list.set(list.get(i), 'Y' );
i = list.get(0);
}
if(myIterator.equals('M'))
{
list.set(list.get(i - 1), ' ');
}
i++;
}
System.out.println(list.toString()); // just to see what comes out
publicstaticvoidmain(字符串[]args)
{
KWLinkedList=新建KWLinkedList();
String linkString=“ZekqmDXJGfaos3MPaSl8p1La.9rXEt43a=Cn#Ds72Y”;
对于(int i=0;i
要使用a向前遍历并替换某些项目,请使用以下方法:
将您的尝试与Andreas解决方案相结合
public static void main(String[] args) {
LinkedList<Character> list = new LinkedList<>();
String linkString = "ZekqmDXJGfaos3MPaSl8p1La.9rXEt43a=Cn#Ds72Y";
for (int i = 0; i < linkString.length(); i++) {
list.add(linkString.charAt(i));
}
ListIterator<Character> myIterator = list.listIterator(0);
while (myIterator.hasNext()) {
char c = myIterator.next();
if (c == 'Y') {
myIterator.set('!');
}
}
while (myIterator.hasPrevious()) {
char c = myIterator.previous();
if (c == 'M') {
myIterator.set(' ');
}
}
System.out.println(list.toString()); // just to see what comes out
}
publicstaticvoidmain(字符串[]args){
LinkedList=新建LinkedList();
String linkString=“ZekqmDXJGfaos3MPaSl8p1La.9rXEt43a=Cn#Ds72Y”;
对于(int i=0;i
输出如下所示[Z、e、k、q、m、D、X、J、G、f、a、o、s、3、P、a、s、l、8、P、1、l、a、9、r、X、e、t、4、3、a、=、C、n、#、D、s、7、2、!]那么您面临的问题是什么呢?
KWLinkedList是一个常见的LinkedList
链接列表吗?myIterator.equals('Y'))
将列表迭代器本身与迭代器指向的元素进行比较Character@Maxim我的迭代器不起作用。每次都会被跳过。@Ivan好的,所以我只需要比较列表项,然后你只向前遍历。根据ta,你需要第二次,而向后遍历以替换M
sk description不要使用原始的列表迭代器。这也消除了强制转换的需要。
while (iter.hasPrevious()) {
char c = iter.previous(); // gets previous value, ie. moves backwards
if (c == 'C')
iter.set('D');
}
public static void main(String[] args) {
LinkedList<Character> list = new LinkedList<>();
String linkString = "ZekqmDXJGfaos3MPaSl8p1La.9rXEt43a=Cn#Ds72Y";
for (int i = 0; i < linkString.length(); i++) {
list.add(linkString.charAt(i));
}
ListIterator<Character> myIterator = list.listIterator(0);
while (myIterator.hasNext()) {
char c = myIterator.next();
if (c == 'Y') {
myIterator.set('!');
}
}
while (myIterator.hasPrevious()) {
char c = myIterator.previous();
if (c == 'M') {
myIterator.set(' ');
}
}
System.out.println(list.toString()); // just to see what comes out
}