1 Map遍历
1 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
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循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用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接口
实现Comparator接口并重写compare方法实现对象排序。
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 迭代器
/**
* 在第一个字符串中删除在第二个字符串中出现过的所有字符,即在遍历中删除集合元素,需要使用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 多态的好处
提高程序的可扩展性
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());
}
}
网友评论