标签归档:Java

RSS feed of Java

Java同时实现多个接口的同名方法

假设有两个接口包含相同的方法名和签名,一个类同时实现了这两个接口,会发生什么?

interface A {
  void foo();
}

interface B {
  void foo();
}

class C implements A, B {
  @Override
  public void foo() {
    // Compile succeeded.
  }
}

上面的代码可以正常编译。但如果两个方法的签名不同,则会编译错误。

interface A {
  int foo();
}

interface B {
  void foo();
}

class C implements A, B {
  @Override
  public ...

继续阅读

Java LinkedHashMap获取第一个元素和最后一个元素

获取LinkedHashMap中的头部元素(最早添加的元素):

时间复杂度O(1)

public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) {
    return map.entrySet().iterator().next();
}

获取LinkedHashMap中的末尾元素(最近添加的元素):

时间复杂度O(n)

public <K, V> Entry<K, V> getTail(LinkedHashMap<K, V> map) {
    Iterator<Entry<K, V>> iterator = map.entrySet().iterator();
    Entry<K, V> tail ...

继续阅读

Java Swing绘制正弦/余弦波形图

下面的Java代码实现了正弦、余弦波形图的绘制,main方法位于DataWindow.java中。

DataPanel.java

import java.awt.Color;
import java.awt.Graphics;
import java.text.DateFormat;
import java.util.ArrayList;

import javax.swing.JPanel;

public class DataPanel extends JPanel {

    private static final long serialVersionUID = -9039511286331044798L;

    private int index ...

继续阅读

Java中怎样遍历HashMap效率最高

Java中遍历HashMap对象中的条目(Entry)时,通常有两种方式:

  1. 通过KeySet遍历
  2. 通过EntrySet遍历

下面的测试分别采用KeySet和EntrySet,通过forEach遍历同一个HashMap对象中的条目。

测试结果表明,方法2通过EntrySet遍历效率优于方法1通过KeySet遍历。

Java代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.junit.BeforeClass;
import org.junit.Test;

public class TestMapTraversal {

    private static int MAXCOUNT = 3000000 ...

继续阅读