陣列增刪 集合刪除

一、陣列增刪

package com.test;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet; public class ArrayBlock { /* 去掉陣列中重複的值 */
public static void testA() {
String [] str = {"cat", "dog", "pig", "dog",};
// 先把陣列轉為集合
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
if(!list.contains(str[i])) {
list.add(str[i]);
}
} /* toArray(T[] a)用法
* 因為list集合預設是object型別,那傳入new String[2],首先有泛型作用
* 如果list長度大於2,那new String[2]只有泛型作用,如果長度等於2
* 那就用new String[2]這個陣列,如果小於2, 那陣列多餘部分為null
*/
String[] newStr = list.toArray(new String[1]);
} //刪除陣列中其中一個元素
public static void testB() {
String [] str = {"cat", "dog", "pig", "dog",}; //刪除pig
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
list.add(str[i]);
}
//list移除記得放外面
list.remove(2);
//返回一個包含所有物件的指定型別的陣列
String[] newStr = list.toArray(new String[1]); } //在陣列中增加一個元素
public static void testC() {
String [] str = {"cat", "dog", "pig", "dog",}; //增加pee
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
list.add(str[i]);
}
// list.add()預設在集合最後插入資料,而 add(2, "pee")就指定在索引第二個位置插入
list.add(2, "pee");
String[] newStr = list.toArray(new String[1]);
}
}

二、集合刪除資料

package com.test;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator; public class ListBlock { public void deliect() {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c"); //方法一: 用for增強方法刪除
for (String str : list) {
if (str.equals("a")) /* 在使用增強for迴圈的過程不能對元素進行刪除、修改、增加的操作等操作。
* 但是,如果操作一下,立刻break跳出,也是不會報錯的!
*/
list.remove(str);
} //方法二:使用傳統for迴圈遍歷
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if (str.equals("a")) {
/* 不會報錯,但會少都一條資訊, 因為執行刪除操作;刪除完成,則集合後邊的元素會自動前移,
* 導致下次遍歷漏掉一個元素,所以少刪後面那個元素。
* 解決方法:在remove();方法下寫上 --i;
*/
list.remove(i);
}
} //方法三:使用api提供的方法list.iterator(),這個方法不會出現問題
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String str = iterator.next();
if (str.equals("a")) {
iterator.remove();
}
}
}
}

三、map集合刪除資料

package com.test;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; public class ListBlock { public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
map.put("4", "four"); // 刪除元素
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
String key = entry.getKey();
int k = Integer.parseInt(key);
if (k % 2 == 1) { /*iterator的remove()方法,也有需要我們注意的地方:
* 每呼叫一次iterator.next()方法,只能呼叫一次remove()方法。
* 呼叫remove()方法前,必須呼叫過一次next()方法。
*/
it.remove();
}
}
}
}

大家看下哪裡不對,或者需要補充的,歡迎指點。