美文网首页
Java笔记

Java笔记

作者: 阿健在长安 | 来源:发表于2018-08-14 18:03 被阅读5次

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());
    }
}

相关文章

  • nio

    参考文章 Java Nio Java NIO学习笔记 - NIO客户端时序图 Java NIO学习笔记 - NIO...

  • Java 学习笔记(13)——lambda 表达式

    title: Java 学习笔记(11)——lambda 表达式tags: [Java 基础, 学习笔记, 函数式...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • Java学习日记

    title: Java学习笔记date: 2018-05-18 12:00:00tags: Java 学习笔记 P...

  • Guava 中的文件操作:Files

    本片内容收录在我的在线笔记 java-note-for-free 中。 笔记源文件在 gitee 中。 Java ...

  • 2018-02-04@JAVA

    JAVA初始 ——浙大MOOC《从零开始学Java》Java笔记系列1 Java世界的hello world 新建...

  • Jasypt非对称加密

    Jasypt: Java Simplified Encryption 本笔记介绍使用Jasypt: Java Si...

  • java学习笔记-日志篇

    java学习笔记-日志篇-目录 java日志篇(1)-日志概述 java日志篇(2)-JUL(java.util....

  • 小白学java

    目录 1、配置java 环境2、java代码规范3、java笔记4、java程序编写 配置java环境 1、下载j...

  • Java8学习笔记目录

    Java8学习笔记 -- 接口的默认方法与静态方法 Java8学习笔记 -- Lambda表达式,Function...

网友评论

      本文标题:Java笔记

      本文链接:https://www.haomeiwen.com/subject/lojukftx.html