1 Map遍歷
1 這是最常見的并且在大多數(shù)情況下也是最可取的遍歷方式。在鍵值都需要時使用。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
2 在for-each循環(huán)中遍歷keys或values。
如果只需要map中的鍵或者值,你可以通過keySet或values來實現(xiàn)遍歷,而不是用entrySet。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍歷map中的鍵
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//遍歷map中的值
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。
2 Comparator接口
實現(xiàn)Comparator接口并重寫compare方法實現(xiàn)對象排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Debug {
public static void main(String[] args) {
List<Dog> list = new ArrayList<>();
list.add(new Dog("a", 45));
list.add(new Dog("b", 40));
list.add(new Dog("c", 90));
list.add(new Dog("d", 20));
Collections.sort(list, new Comparator<Dog>() {
@Override
//對狗的年齡降序排列
public int compare(Dog dog1, Dog dog2) {
return dog2.age - dog1.age;
}
});
for (Dog e : list) {
System.out.println(e.name + "---" + e.age);
}
}
}
3 迭代器
/**
* 在第一個字符串中刪除在第二個字符串中出現(xiàn)過的所有字符,即在遍歷中刪除集合元素,需要使用Iterator中的remove()方法。
*/
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
public class TheIterator {
public static String func(String str1, String str2) {
LinkedList<Character> list = new LinkedList<>();
for (int i = 0; i < str1.length(); i++) {
list.add(str1.charAt(i));
}
HashSet<Character> set = new HashSet<>();
for (int i = 0; i < str2.length(); i++) {
set.add(str2.charAt(i));
}
Iterator<Character> iterator = list.iterator();
while (iterator.hasNext()) {
char c = iterator.next();
if (set.contains(c)) {
iterator.remove();
}
}
String res = "";
for (Character c : list) {
res += c;
}
return res;
}
public static void main(String[] args) {
System.out.println(func("We are students", "aeiou"));
}
}
4 多態(tài)的好處
提高程序的可擴(kuò)展性
public class DuoTai {
static class Bird{
public void moo(){
System.out.println("bird~~");
}
}
static class Bird1 extends Bird{
public void moo(){
System.out.println("bird1111");
}
}
static class Bird2 extends Bird{
public void moo(){
System.out.println("bird2222");
}
}
static class Wife{
public void listen(Bird bird){
bird.moo();
}
}
public static void main(String[] args) {
new Wife().listen(new Bird1());
new Wife().listen(new Bird2());
}
}