遇到的問題__解決與總結__1127

知識點總結

1.

List集合在執行刪除操作remove()的時候, 刪除指定元素後, 後面元素會向前移動一位,也就是元素原來的角標會減1. 所以, 當你在遍歷List集合對象的時候, 爲了確保能遍歷到每一個元素, 在執行刪除操作時, 必須讓角標變量減1.

for(int i = 0; i < list.size(); i++){
    if(list.get(i).toString().matches(regex)){
            list.remove(i--);           //執行remove後,後面的元素向前移動一位,而指針還在往後走,所以要--1
        }
    }

2.

如果用Iterator迭代器進行迭代的時候, 是不能有改變迭代器數據源的長度的, 如果改變, 會報併發修改異常

ConcurrentModificationException

這個時候可以用List特有的迭代器和特有的方法.

3.

關於隨機生成四個隨機碼, 有且只能有一個字母的問題

import java.util.Random;
public class 隨機碼加字符 {
/**
 * 隨機生成一個 四位的隨機碼, 要求 其中必須要有一個小寫字母(只能有有一位是字母).
 * 例如: 00a0; b232; 234g;
 */
//先給數組賦值,最後把隨機的字母隨機覆蓋數組裏的數字。很妙!!!
public static void main(String[] args) {
    String[] str = new String[4];
    for(int i = 0; i < str.length; i++)//先給數組全部賦值
        str[i] = new Random().nextInt(10)+"";
    //隨機一個數組角標,用一個字母覆蓋這個元素
    str[new Random().nextInt(str.length)] = (char)(new Random().nextInt(25)+97)+""; 
    for(String s : str)
        System.out.print(s);
    }
}

這個寫法很妙,也不知當時的靈感是怎麼來的.

4.

利用Random隨機生成不相同的數

import java.util.Random;
public class 隨機不相同的數 {
    /**
     * Random隨機數字會隨機出相同的數字,通過這個方法,可以實現隨機出一組互不相同的數字
     * 思路:通過判斷已賦值數據和本次要賦值的數據比較,如果相同,就回去重新再隨機一個。
     * 可以用來隨機數組的角標,很妙!
     */
    public static void main(String[] args) {
        int[] arr = new int[100]; // 創建一個數組
        for (int i = 0; i < arr.length; i++) {// 給數組賦值
            arr[i] = new Random().nextInt(100); // 隨機一個數字,賦給數組
            for (int j = 0; j < i; j++) {// 進行判斷
                if (arr[i] == arr[j]) { // 如果相同
                    i--; // 就i--
                    break; // break跳出去再隨機一個數
                }
            }
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章