HashTable(MAP) 和ArrayList(List)是类,它们分別是继承了集合中Collection接口的MAP接口和List接口(原创).
首先来用一下关于HashMap的demo如下
public class C {
public void test(){
Hashtable table=new Hashtable();
table.put("one",new Integer(1));
table.put("two",new Integer(2));
Integer a=(Integer) table.get("one");
Integer b=(Integer) table.get("two");
int count=table.size();
System.out.println("one===="+a);
System.out.println("two===="+b);
System.out.println("count=="+count);
}
}
public static void main(String[] args) {
C c= new C();
c.test();
}
}
運行结果为
one====1
two====2
count==2
假如你有一个 Integer 对象的列表,并且你想使用 Coolections.sort 来对它们进行排序。另外,你还要自己指定一个比较器,因为你想按降序而不是升序排列它们。这里有一些代码示例说明了该怎么做:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class C {
// 使用实现了 Comparator 的匿名类排序。
static void sortanon(List list) {
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2)
{int cc = ((Integer)o1).compareTo(o2);
return (cc < 0 ? 1 : cc > 0 ? -1 : 0);
}
});
}
// 使用实现了 Comparator 的局部类排序
static void sortlocal(List list)
{class MyComparator implements Comparator
{public int compare(Object o1, Object o2)
{int cc = ((Integer)o1).compareTo(o2);
return (cc < 0 ? 1 : cc > 0 ? -1 : 0);
}};
Collections.sort(list, new MyComparator());
}
public static void main(String[] args) {
List list1 = new ArrayList();
for(int i=0;i<3;i++){
list1.add(new Integer(i));
}
sortanon(list1);
System.out.println(list1);
List list2 = new ArrayList();
list2.add(new Integer(4));
list2.add(new Integer(6));
list2.add(new Integer(5));
sortlocal(list2);
System.out.println(list2);
}}
如果運行出现以下错误的话
java.lang.UnsupportedClassVersionError: C (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"
可能是jdk的版本問題(可能是你用的jdk5.0,将它转为1.4就可以了)方法如下
windows-->prefences-->java-->compiler将5.0改为1.4
总结
匿名类和局部类更深层次的区别在于:
匿名类不能定义构造器,因为它是没有名字的。不过它还是可以通过 {...} 格式的初始化代码块做一些简单的初始化,
局部类可以拥有通过常规方法使用的构造器,而匿名类地必须通过 {...} 来实现初始化。
阅读(1851) | 评论(0) | 转发(0) |