1.错误删除方法:
/** * @author hadoop * */ import java.awt.List; import java.util.Iterator; import java.util.LinkedList; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); // String string=in.nextLine(); LinkedList<String> list=new LinkedList<>(); list.add("hello"); list.add("world"); list.add("good"); list.add("shit"); for(String str:list){ list.remove(str); } System.out.println(list.size()); } }报错:Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
at com.hqy.test.test.main(test.java:28)
2.正确方式:
/** * @author hadoop * */ import java.awt.List; import java.util.Iterator; import java.util.LinkedList; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); // String string=in.nextLine(); LinkedList<String> list=new LinkedList<>(); list.add("hello"); list.add("world"); list.add("good"); list.add("shit"); for(Iterator<String> iterator=list.iterator();iterator.hasNext();){ if(iterator.next().equals("hello")){ iterator.remove(); } } System.out.println(list.size()); } }
输出结果:3
3.应用:(华为机试)
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1
输入
abcdd
输出
dd
/** * */ package com.hqy.test; /* * */ import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Scanner; import java.util.Set; /** * @author hadoop * */ public class Main23 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner inScanner=new Scanner(System.in); while(inScanner.hasNext()){ String string=inScanner.nextLine(); LinkedHashMap<Character, Integer> map=new LinkedHashMap<>(); char[] cs=string.toCharArray(); for(int i=0;i<cs.length;i++){ if(map.containsKey(cs[i])){ map.put(cs[i], map.get(cs[i])+1); }else{ map.put(cs[i], 1); } } int min=map.get(cs[0]); for(int i=0;i<cs.length;i++){ if(map.get(cs[i])<min){ min=map.get(cs[i]); } } //对JAVA集合进行遍历删除时务必要用迭代器。 Set<Character> set=map.keySet(); for(Iterator<Character> it = set.iterator();it.hasNext();){ Character s = it.next(); if(min==map.get(s)){ it.remove(); } } for(int i=0;i<cs.length;i++){ if(map.containsKey(cs[i])){ System.out.print(cs[i]); } } System.out.println(); } } }