Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522115
  • 博文数量: 147
  • 博客积分: 10105
  • 博客等级: 上将
  • 技术积分: 1594
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-14 10:18
文章分类

全部博文(147)

文章存档

2011年(4)

2010年(4)

2009年(6)

2008年(5)

2007年(40)

2006年(88)

我的朋友

分类: Java

2006-11-15 17:29:24

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);
 }}
 
運行結果为
[3, 2, 1]
[6, 5, 4]
 
 
如果運行出现以下错误的话
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
 
 
总结
匿名类和局部类更深层次的区别在于:
匿名类不能定义构造器,因为它是没有名字的。不过它还是可以通过 {...} 格式的初始化代码块做一些简单的初始化,
局部类可以拥有通过常规方法使用的构造器,而匿名类地必须通过 {...} 来实现初始化。
阅读(1841) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~