知識點總結
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跳出去再隨機一個數
}
}
}
}
}