JAVA小練習-刪除arraylist中的資料
阿新 • • 發佈:2018-12-21
首先初始化一個Hero集合,裡面放100個Hero物件,名稱分別是從 hero 0 hero 1 hero 2 … hero 99 通過遍歷的手段,刪除掉名字編號是8的倍數的物件
package collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import charactor.Hero; public class TestCollection{ public static void main(String[] args) { List<Hero> heros = new ArrayList<>(); System.out.println("原ArrayList:"); for(int i=0;i<100;i++) { heros.add(new Hero("Hero "+i)); System.out.print(heros.get(i)+" "); } System.out.println("現在的集合中元素的個數是:"+heros.size()); System.out.println("-------------------------------------------"); // 通過遍歷的手段,刪除掉名字編號是8的倍數的物件 // 第一種方法:for迴圈遍歷刪除 /*思路: * 先用迴圈遍歷ArrayList中的元素 * 然後利用重寫的toString方法獲得字串形式的類名 * 利用字串的判斷內容方法找出為8的倍數的元素 * 將其刪除 */ { System.out.println("第一種方法:for迴圈遍歷刪除:"); for(int i=0;i<heros.size();i++) { // System.out.println(heros.get(i)); int id = Integer.parseInt(heros.get(i).toString().substring(5)); // System.out.println(id); if(id != 0 && id%8 == 0) { heros.remove(heros.get(i)); System.out.print(heros.get(i)+" "); } } System.out.println("現在的集合中元素的個數是:"+heros.size()); } System.out.println("-------------------------------------------"); // 第二種方法:利用迭代器Iterator刪除元素 { System.out.println("第二種方法:利用迭代器Iterator刪除元素:"); // 建立迭代器物件: Iterator<Hero> it = heros.iterator(); while(it.hasNext()) { Hero h = it.next(); int id = Integer.parseInt(h.toString().substring(5)); if(id != 0 && id%8 == 0) { // heros.remove(h); //會導致丟擲java.util.ConcurrentModificationException異常, //因為在遍歷是對集合進行了修改 it.remove(); //推薦使用 System.out.print(h+" "); } } System.out.println("現在的集合中元素的個數是:"+heros.size()); } System.out.println("-------------------------------------------"); // 第三種方法:利用增強型for迴圈遍歷集合並刪除 { System.out.println("第三種方法:利用增強型for迴圈遍歷集合並刪除:"); List<Hero> list_remove = new ArrayList<>(); //新建一個集合 for(Hero each : heros) { int id = Integer.parseInt(each.toString().substring(5)); if(id != 0 && id%8 == 0) { // heros.remove(each); //會導致丟擲java.util.ConcurrentModificationException異常, //因為在遍歷是對集合進行了修改 list_remove.add(each); //將要移除的元素放到一個集合裡面 } } heros.removeAll(list_remove); //移除集合中的所有元素 for(Hero each : heros) { System.out.print(each+" "); } System.out.println("現在的集合中元素的個數是:"+heros.size()); } } }
筆記:此題不能直接判斷元素序號與8的關係然後刪除,因為刪除之後元素重新排列,與原本的想法就不匹配了。所以要想辦法取到元素內容中的序號,以此作為判斷依據。 String java.lang.String.substring(int beginIndex) String java.lang.String.substring(int beginIndex,int endIndex)左閉右開