import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class GenericTypeDemo {
public static void main(String[] args){
long start = System.currentTimeMillis();
long generic_map_time = 0;
Map<String, String> generic_map = new HashMap<String, String>();
for(int i = 0; i < 1000000; i++){
generic_map.put("item" + i,"value" + i);
}
for(int i = 0; i < generic_map.size(); i++){
String value = generic_map.get("item" + i);
}
Iterator<Entry<String, String>> iter = generic_map.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, String> entry = iter.next();
String key = entry.getKey();
String value = entry.getValue();
}
for(int i = 0; i < generic_map.size(); i++){
if(generic_map.containsKey("item" + i)){
generic_map.remove("item" + i);
}
}
generic_map_time = System.currentTimeMillis() - start;
long map_time = 0;
Map map = new HashMap();
for(int i = 0; i < 1000000; i++){
map.put("item" + i,"value" + i);
}
for(int i = 0; i < map.size(); i++){
String value = map.get("item" + i).toString();
}
Iterator iter2 = map.entrySet().iterator();
while (iter2.hasNext()) {
Entry entry = (Entry) iter2.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
}
for(int i = 0; i < map.size(); i++){
if(map.containsKey("item" + i)){
map.remove("item" + i);
}
}
map_time = System.currentTimeMillis() - start;
System.out.println("泛型:" + generic_map_time + "非泛型:" + map_time);
}
}
////////////////////////////////////////////
数据量(String类型) 泛型map 非泛型
1000000 1782 3516
5000000 8688 17953
100000 125 250
数据量(int类型) 泛型map 非泛型
1000000 469 953
5000000 2422 4782
100000 32 63
用泛型的性能比不用泛型而每次都要强制转换的性能好一倍,所以我们在集合类上都最好使用泛型,提高性能。泛型在集合类中使用最广泛。
分享到:
相关推荐
### 泛型编程分析 #### 引言:泛型编程的重要性 在计算机科学领域,泛型编程(Generics)作为一种重要的编程范式,为软件开发带来了显著的优势,尤其是在提高代码的可重用性和减少维护成本方面。随着C++语言的发展...
2. **性能提升**:泛型消除了值类型与对象之间的装箱和拆箱操作,这可以避免不必要的内存分配和回收,从而提高程序性能。对于引用类型,由于不需要进行显式类型转换,也减少了处理器的负担。 3. **代码复用**:泛型...
1. **性能问题**:由于非泛型集合存储的是 `object` 类型,这意味着当向集合中添加基本类型(如 `int`)时,这些类型会被装箱为引用类型。而在取出时,又需要进行拆箱操作。装箱和拆箱过程中会产生额外的内存分配和...
与非泛型集合相比,泛型集合提供了更强的类型安全性,减少了运行时的装箱与拆箱操作,提高了程序性能。 #### 三、Dictionary 类详解 `Dictionary, TValue>`类是.NET Framework 2.0中新引入的一个泛型集合类,它...
因此,泛型不会影响程序的运行时性能。 总的来说,Java泛型增强了代码的类型安全性,提高了可读性和重用性,减少了类型转换的麻烦,是Java编程中不可或缺的一部分。在实际开发中,熟练掌握泛型的使用,能够使代码...
7. **实例分析**:压缩包中可能包含多个具体的代码示例,每个示例都展示了泛型委托在不同情境下的应用,如数据处理、算法实现等。 通过深入研究这些实例,你将能更好地理解泛型委托如何增强代码的灵活性,提高代码...
对于题目中提到的"泛型的反射分析代码可参考复杂未看懂",可能是指具体的代码实现比较复杂,没有理解透彻。这可能涉及到对Java泛型和反射的深入理解,包括类型擦除、边界通配符、类型变量的实际类型等概念。如果遇到...
通过上述分析可以看出,C#的泛型机制使得我们可以编写高度灵活且可重用的代码。泛型的实现依赖于CLR的支持,通过在编译阶段生成特殊的IL代码,在运行时动态实例化为具体的类型。这种机制不仅提高了代码的可维护性和...
5. 性能优化:讨论泛型编程和设计模式如何帮助优化程序性能,减少运行时开销,提高代码效率。 6. 综合示例:提供复杂的实际项目案例,展示如何将泛型编程和设计模式结合起来解决实际问题。 通过学习这本书,读者...
泛型集合允许我们在声明集合时指定元素的数据类型,这提供了编译时的类型检查和更好的性能,因为无需在运行时进行类型转换。`Dictionary, TValue>`和`List<T>`是.NET Framework中最常用的两种泛型集合。 **1) 使用...
使用泛型可以避免装箱和拆箱操作,提升性能,并确保类型安全。 **二、C# 反射** 反射是.NET Framework提供的一个强大工具,它允许运行时的代码分析、访问和修改程序集、类型、方法、属性等元数据。通过反射,我们...
泛型是Java SE 5.0引入的一个特性,目的是提高代码的类型安全性,减少类转换异常,并提供更好的性能。下面我们将详细探讨自定义泛型集合的相关知识点。 首先,理解泛型的基本概念。泛型是Java中的模板类或模板方法...
- **性能损失**:非泛型集合需要频繁地进行装箱和拆箱操作,这会带来额外的性能开销。 #### 类型安全 在.NET中,如C#、C++和VB.NET等语言默认都是强类型语言,即在编译阶段就会进行严格的类型检查。例如,试图将一...
这可能是通过分析SQL语句或者执行自定义的查询逻辑实现的。 3. **类型安全的转换**:利用泛型,确保在将数据库返回的结果转换为页面元素时不会出现类型错误。这通常涉及将数据库中的结果集(如ResultSet)转换为...
在Java编程语言中,泛型是一种强大的特性,它允许开发者在定义类、接口和方法时引入类型参数,从而实现代码的复用并提高类型安全。...在实际开发中,要善于利用泛型来优化数据结构和方法,同时注意类型安全和性能优化。
这些泛型集合类提供了比非泛型集合类更高的性能和类型安全性,因此在 .NET 2.0 及以上版本的应用程序中,强烈建议使用这些泛型集合类替代传统的非泛型集合类(如 `ArrayList`)。 #### 泛型接口、类、方法、事件和...
4. 算法的效率分析:如何选择合适的算法以优化程序性能。 5. 特殊用途的STL组件:如stack(栈)、queue(队列)和priority_queue(优先队列)。 6. 自定义容器和算法:如何利用STL提供的基础设施开发自己的数据结构...
本文旨在深入探讨泛型的概念、实现机制及其在.NET Framework中的应用,同时分析其带来的独特优势,包括类型约束、泛型方法、委托和继承等。 #### 泛型问题陈述与解决方案 在未使用泛型的情况下,设计一个能处理...