學習筆記,僅供參考
因為我突然懶了,是以這個Blog以代碼為主,解釋為輔
文章目錄
- 集合
- 去除ArrayList中重複的字元串元素
- 去除ArrayList中重複的自定義對象元素
- LinkedList的特有功能
集合
去除ArrayList中重複的字元串元素
package com.guiyang.object;
import java.util.ArrayList;
import java.util.Iterator;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo1_ArrayList {
public static void main(String[] args) {
ArrayList alist = new ArrayList();
alist.add("a");
alist.add("a");
alist.add("a");
alist.add("b");
alist.add("b");
alist.add("c");
ArrayList newlist = getSingle(alist);
System.out.println(newlist);
}
public static ArrayList getSingle(ArrayList list) {
ArrayList newlist = new ArrayList();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
if (!newlist.contains(object)) {
newlist.add(object);
}
}
return newlist;
}
}
輸出:
[a, b, c]
去除ArrayList中重複的自定義對象元素
注意,contains方法判斷集合中是否包含某個元素,底層依賴的是equals方法。
是以,在進行定義對象的比較時,我們需要改寫自定義類的equals方法.
自定義Person類:
package com.guiyang.bean;
public class Person {
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
Java:
package com.guiyang.restudy3;
import java.util.ArrayList;
import java.util.Iterator;
import com.guiyang.bean.Person;
@SuppressWarnings({"rawtypes", "unchecked"})
public class D2ArrayListRepeat {
public static void main(String[] args) {
ArrayList list = new ArrayList(); //建立集合對象
list.add(new Person("小白", 23));
list.add(new Person("小白", 23));
list.add(new Person("大黃", 24));
list.add(new Person("大黃", 24));
list.add(new Person("王子", 24));
ArrayList newList = getSingle(list); //調用方法去除重複
System.out.println(newList);
}
public static ArrayList getSingle(ArrayList list) {
ArrayList newList = new ArrayList<>(); //1,建立新集合
Iterator it = list.iterator(); //2,根據傳入的集合(老集合)擷取疊代器
while(it.hasNext()) { //3,周遊老集合
Object obj = it.next(); //記錄住每一個元素
if(!newList.contains(obj)) {//如果新集合中不包含老集合中的元素
newList.add(obj); //将該元素添加
}
}
return newList;
}
}
輸出:
[Person [name=小白, age=23], Person [name=大黃, age=24], Person [name=王子, age=24]]
同樣,remove方法移除集合中的某個元素時,底層依賴的還是equals方法。
package com.guiyang.restudy3;
import java.util.ArrayList;
import java.util.Iterator;
import com.guiyang.bean.Person;
@SuppressWarnings({"rawtypes", "unchecked"})
public class D2ArrayListRepeat {
public static void main(String[] args) {
ArrayList list = new ArrayList(); //建立集合對象
list.add(new Person("小白", 23));
list.add(new Person("小白", 23));
list.add(new Person("大黃", 24));
list.add(new Person("大黃", 24));
list.add(new Person("王子", 24));
list.remove(new Person("王子", 24));
System.out.println(list);
}
public static ArrayList getSingle(ArrayList list) {
ArrayList newList = new ArrayList<>(); //1,建立新集合
Iterator it = list.iterator(); //2,根據傳入的集合(老集合)擷取疊代器
while(it.hasNext()) { //3,周遊老集合
Object obj = it.next(); //記錄住每一個元素
if(!newList.contains(obj)) { //如果新集合中不包含老集合中的元素
newList.add(obj); //将該元素添加
}
}
return newList;
}
}
輸出:
[Person [name=小白, age=23], Person [name=小白, age=23], Person [name=大黃, age=24], Person [name=大黃, age=24]]
LinkedList的特有功能
package com.guiyang.restudy3;
import java.util.LinkedList;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class D1Linkedlist {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.addFirst("a");
list.addFirst("b");
list.addFirst("c");
list.addFirst("d");
list.addLast("e");
list.addLast("f");
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list.removeFirst());
System.out.println(list.removeLast());
System.out.println("---------");
System.out.println(list.get(0));
System.out.println(list);
}
}
輸出:
d
f
d
f
---------
c
[c, b, a, e]