- 浏览: 239598 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xmwjfid:
写的不错,就是有个疑问groupSize 这个用来干什么?
jQuery Ajax分页(pagination.js)分页插件 (转载) -
GRACEACT:
Thanks.对我很有帮助。
使用Java组件itext 生成pdf的介绍 -
xianzi_2008:
jQuery Ajax分页(pagination.js)分页插件 (转载) -
xiaotao.2010:
Demo a=new Demo()
{ ...
匿名类 -
system1029hq:
jQuery Ajax分页(pagination.js)分页插件 (转载)
Java 5.0中最大的特性是引入了泛型,而引入泛型影响最大的就是几个集合类。前一次我简要记录了一下学习List的笔记,本次我将概要地描述一下泛型在集合中的其他应用。 你能期望得到什么?上面的语句编译时不会出错,不过运行时可能让你大吃一惊。所以为了减少运行时出错的可能,建议你尽量使用参数化类型。 5.返回值参数类型化 总之,引入泛型的目的就是为了减少编程时的错误,尽量将错误在编译时就发现,而不是遗留到运行时,所以我们应该尽可能地运用好泛型这一强大的工具提高我们的编程能力。下面以一个很粗糙的例子作为本文的终结: 上面程序的运行结果如下所示:
1.指定一个类型参数
一个类型参数主要针对List、Set等集合类而言,具体处理和List大同小异,不再赘述。
2.指定两个类型参数
两个类型参数主要针对Map集合类。Map类会存储一对元素:键-值对,自然就会对应着两种类型。通List一样,使用Map时只需要指定参数类型就可以了,不同之处在于需同时指定键类型和值类型:
Map<String, String> map = new HashMap<String, String>();
如果理解了泛型的核心概念:所谓参数类型,不过是占位符而已;那么使用一个类型参数还是两个类型参数其实没有任何差别。
3.使用Iterator
如果集合类使用了类型参数,则定义相应的迭代器时也必须指定类型参数,例如:
Map<Integer, String> map = new TreeMap<Integer, String>();
Interator iter = map.keySet().iterator();
上面的语句就是无法编译的,因为Iterator和Map不配套;不过,反过来,如果集合类没有使用类型参数,而Iterator使用了类型参数,这种情况是允许的,之所以这样,主要是为了方便,省掉获取元素必须进行映射的步骤。例如下面的语句:
Map map = new TreeMap();
Interator<Integer> iter = map.keySet().iterator();
则是合法的,不过建议你别这么做,否则你是自找麻烦。因为对于下面的语句:
map.put( " zero " , " class 1 " );
map.put( 1 , " class 2 " );
map.put( " two " , " class 3 " );
map.put( " three " , " class 4 " );
map.put( " four " , 3 );
Iterator < String > iter = map.keySet().iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
4.函数形参参数类型化
我们也可以指定函数形参的参数类型,例如:
for (Iterator < String > i = list.iterator( ); i.hasNext( ); ) {
out.println(i.next( ));
}
}
除了可以使用集合体时采用参数化类型,返回值也可以采用参数类型化,例如:
List < String > list = new LinkedList < String > ();
list.add( " Hello " );
return list;
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap;
public class IteratorTester {
public static Map MapInitial(Class type) {
Map < Integer, String > map = null ;
try {
map = (Map < Integer, String > ) type.newInstance();
map.put( 0 , " class 1 " );
map.put( 1 , " class 2 " );
map.put( 2 , " class 3 " );
map.put( 3 , " class 4 " );
map.put( 4 , " calss 4 " );
} catch (InstantiationException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return map;
}
public static void CollectionIterator() {
Map < Integer, String > map = MapInitial(( new HashMap < Integer, String > ()).getClass());
Collection < String > list = map.values();
Iterator < String > iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
public static void ListIterator() {
Map < Integer, String > map = MapInitial(( new TreeMap < Integer, String > ()).getClass());
List < String > list = new ArrayList < String > ();
Set < Integer > set = map.keySet();
Iterator < Integer > iter = set.iterator();
while (iter.hasNext()) {
list.add(map.get(iter.next()));
}
Iterator < String > iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
public static void main(String[] args) {
CollectionIterator();
ListIterator();
}
}
calss 4
class 2
class 4
class 1
class 1
class 2
class 3
class 4
calss 4
发表评论
-
JavaScript与Java的区别
2012-09-29 23:50 10951.基于对象和面向对象 Java是一种面向对象的语言 ... -
应该被记住的 8 位Java人物
2012-07-04 17:53 1456这里列举了 8 个 Java 人物,他们创建了对 Ja ... -
Struts基本原理
2012-07-04 17:48 1545上图来源于Struts2官方站点,是Struts 2 的整 ... -
Spring事务配置的五种方式
2012-07-04 17:45 1471Spring配置文件中关于事务配置总是由三个组成部分,分别是D ... -
MyEclipse中Ctrl+Shift+F格式化代码时不换行
2012-06-12 21:04 2731Eclipse 格式化代码时不换行 每次用Eclipse自带 ... -
MyEclipse 解决内存溢出
2012-06-12 20:57 22991、修改eclipse.ini在Myeclipse安装目录下G ... -
J2EE体系结构图或三层结构图
2012-05-05 23:55 4850J2EE体系结构图或三层结构图 J2EE体系结构图: ... -
struts2<s:iterator>遍历map小结
2012-05-05 23:34 26111.MapAction.java package com.u ... -
java 调用.net DLL的方法
2012-04-30 16:18 1522背景: 近日一个ja ... -
实现了ZIP【压缩】【解压】功能
2012-04-28 13:59 1316程序实现了ZIP压缩。共分为2部分 : 压缩(compress ... -
框架StringUtil
2012-04-25 21:47 1393package com.common.string; i ... -
MD5
2012-03-15 22:22 978package com.kingsoft.main; / ... -
JAVA字符串的方法
2011-11-28 21:04 10641、length() 字符串的长度 例:char chars ... -
JAVA中线程同步方法
2011-11-28 21:01 20311 wait方法: 该方法属于Object的方 ... -
JAVA几个常见错误简析
2011-11-28 20:58 1023JAVA几个常见错误简析: 1,空指针错误 java ... -
Eclipse中使用debug技术
2011-11-28 20:52 1343一、怎样启动debug模式 1、在程序中设置断点 ... -
Java中如何获得文件的物理路径
2011-10-31 23:58 1278Java中如何获得文件的物理路径 package com. ... -
@SuppressWarnings("***")
2011-09-23 11:09 977解释一: 屏蔽某些编 ... -
Struts2中使用拦截器(Interceptor)控制登录和权限
2011-07-22 13:20 1415在jsp Servlet中我们通常使用Serv ... -
Struts2标签解释
2011-07-22 13:14 1503A:<s:a xhref=""> ...
相关推荐
Map接口是键值对的集合,不继承自Collection接口,但与Collection密切相关。Map的实现类包括HashMap和TreeMap等。HashMap按照哈希表原理工作,而TreeMap则按照键的自然顺序或者Comparator来维护键值对的排序。 ...
java数据结构,泛型与集合框架,有各种集合运算的算法,Collection接口介绍,数组方法介绍等
### 泛型与集合类知识点总结 #### 一、泛型简介 - **定义**:泛型是Java SE 5.0引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 - **作用**: - ...
- **List** 是一个强类型化的泛型集合,用于存储同类型的元素。它实现了 `IList<T>`、`ICollection<T>` 和 `IEnumerable<T>` 接口,提供了丰富的操作方法。 - **Void ForEach(匿名委托)**:可以使用 `ForEach` ...
泛型与集合框架 泛型是 Java 语言中的一种机制,允许开发者创建可以重复使用的代码,可以建立具有类型安全的数据结构,如链表、散列表等。泛型的主要目的是可以建立具有类型安全的数据结构,在使用这些泛型类建立的...
Java泛型与集合框架是Java编程中至关重要的概念,它们极大地增强了代码的可读性、类型安全性以及效率。泛型是Java 5引入的新特性,主要用于集合类,它允许在编译时进行类型检查,避免了运行时的类型转换异常。 泛型...
JAVA泛型与集合框架知识点总结 JAVA泛型是JDK1.5中引入的一种机制,主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。泛型类的声明可以使用“class 名称<泛型列表>”语法,例如:class ...
Java泛型与集合是Java编程中的核心概念,它们在实际开发中扮演着至关重要的角色。本书"Java Generics and Collections"深入探讨了这两个主题,帮助开发者编写更安全、更高效且可维护的代码。 首先,让我们来理解...
Java泛型与集合是Java编程中的重要组成部分,它们在提高代码可读性、安全性以及减少类型转换错误方面起到了关键作用。本章将深入探讨这两个概念及其应用。 首先,理解Java集合框架的结构至关重要。Java集合框架包括...
5. **协变与逆变**: 在泛型中,类型参数的使用会影响类型安全。比如,List是List的子类型(协变),而List不是List的子类型(逆变)。 在实际开发中,理解和熟练运用Java集合框架和泛型能够大大提高代码的可维护性...
文中通过多个代码示例,展示了如何使用泛型集合和泛型接口,以及如何结合 LINQ 进行高效的数据处理。 适合人群:具有 C# 编程基础的开发人员,特别是希望深入了解面向对象编程、泛型和集合框架的技术人员。 使用场景...
泛型与集合框架的结合使得我们可以为集合指定具体的元素类型,如`ArrayList<String>`,这确保了集合中的所有元素都是String类型,防止了ClassCastException的发生。 在Java中,泛型有三种主要用法: 1. 类泛型:如...
### C# 泛型集合与非泛型集合详解 #### 一、概述 在.NET Framework Class Library (FCL) 中,提供了丰富的集合类型,这些集合类型是编程中不可或缺的工具。根据是否支持泛型特性,这些集合大致可以分为两类:泛型...
Java泛型和集合是Java编程语言中的核心特性,它们极大地提高了代码的类型安全性和可读性,同时也简化了集合操作。本资料 "[Java泛型和集合].(Java.Generics.and.Collections).Maurice.Naftalin&Philip.Wadler....
Java中的集合类与泛型机制(Java SE 1.5中加入了泛型机制)
在“简单的foreach示例”中,可以看到迭代器如何与`foreach`配合,简洁地遍历数组或其他集合。 数据结构是存储和组织数据的特定方式,它们直接影响到算法的效率。在C#中,`数组`是最基本的数据结构,分为一维数组、...
9. **并发编程与集合**:Java并发API如ConcurrentHashMap和CopyOnWriteArrayList提供了线程安全的集合实现,适用于多线程环境。 10. **CollectionHomework**:这个文件可能包含了关于集合框架和泛型的习题解答,...