`
fengkex
  • 浏览: 632 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

泛型,自己学习笔记

阅读更多
1. Collection接口:申明了一些操作集合中的元素的方法。它没有一个直接的子类 。但编程一般不会直接针对Collection。
但它提供了一些很常用的方法:
1) boolean add(E e);
2) boolean remove(Object o);
3) int size();
4) Iterator<E> iterator();

2. Set接口:不能存放重复元素的接口  (重复:两个对象equals相等)
在类中重写equals()和hashCode()方法  八种基本数据类型的包装类,String,Date,Calender都重写了着两个方法。
1)HashSet : 内部使用哈希表来存储元素 所以存取元素的效率最高 ,不保证元素的存放顺序。
2)LinkedHashSet: 采用散列表和双向链表来存储元素,所以他保证元素的存放顺序。效率比HashSet低。
3)TreeSet :
3. List接口:有序的列表,允许有重复的元素。
  1)可以根据元素的索引来存取元素。
    void add(int index,E element),
    E get(int index),
    E remove(int index),
    ListIterator<E> listIterator()
  2) 两个重要的实现类:
     a) ArrayList :内部采用了数组结构来存取元素,根据索引来存取元素的效率很高。不适合频繁增删元素的情况。
     b) LinkedList: 内问采用了双向链表来存储元素,增删效率比ArrayList高。但他的根据索引查询的效率很低。

4. Map接口:实现的是键/值对的存储
V put(K key, V value)
V get(Object key)
V remove(Object key)
int size()
视图:
1.Collection<V> values()//返回的是Collection接口,里面存放的是键值对的值
2.Set<K> keySet() //返回键值对中包含的键的集合用于循环遍历其中的key值
3.Set<Map.Entry<K,V>> entrySet() //返回的是map中存储的键值对对象(entry)的集合
实现类:
HashMap:应用Hash表来存储键值对中的键,根据键取查询对应的值,因此存储的键值对是无序的
                      存取效率高。
LinkedHashMap:内部用双向链表和哈希表来存储,键值对存放有序



5. 排序集合:
1)可排序的类必须实现comparable接口,在compareTo方法中定义比较规则
如果当前对象小于指定比较的对象,则返回负整数;
如果当前对象大于指定比较的对象,则返回正整数;
如果当前对象等于指定比较的对象,则返回0;
2)如果需要多种方式进行比较时,就应该是用比较器,比较器类要实现comparator接口
int compare(T o1,T o2){}
3) 排序集合有TreeSet和TreeMap
支持两种排序方式:
a.直接存入实现了comparable接口的对象
b.构造一个比较器compartor

6. 遗留集合
1)Vector
2) Stack
3) Hashtable
4) Properties是一个属性集,
a) 它的键和值都是字符串
b) 可以从文件流中加载键值对,也可以保存到文件流中,
使用是不建议使用 put() 和 get(),应该是用setProperty()和getProperty()
7. 集合工具类 Collections,所有的方法都是静态方法。
     常用算法
  1) public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
  2) public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
  3) public static <T extends Comparable<? super T>> void sort(List<T> list)
  4) public static void shuffle(List<?> list)
  5) public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
    同步处理
  1) public static <T> Collection<T> synchronizedCollection(Collection<T> c)
  2) public static <T> Collection<T> synchronizedSet(Set<T> c)
  3) public static <T> Collection<T> synchronizedList(List<T> c)
  4) public static <T> Collection<T> synchronizedMap(Map<T> c)
  注意一点,如果使用迭代器迭代,还需要手工处理同步问题
  List<String> list = ...
  synchronized(list){
     for(Iterator<String> it = list.iterator(); it.hasNext();){
         it.next();
     }
  }
先到这里吧
分享到:
评论

相关推荐

    泛型笔记学习2009

    ### 泛型基础知识与应用详解 #### 泛型概述 泛型是Java语言的一个重要特性,它主要解决了在集合框架中频繁出现的类型转换问题,同时也增强了类型安全性。泛型的概念最早出现在Java 5.0版本中,它允许开发者创建能够...

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....

    Java泛型学习笔记.pdf

    学习Java泛型能够帮助我们更好地编写和使用通用的类、接口和方法。以下是从给定文件的标题、描述、标签和部分内容中提取出的详细知识点。 1. 泛型类和泛型方法: 在Java中,泛型可以应用于类、接口和方法。泛型类和...

    Exer.java(JavaSE泛型学习笔记)

    泛型学习笔记2的源代码,泛型 : 要解决类型的安全问题, 如果使用Object类型会带来类型的损失。典型的应用就是在集合中, 集合中理论上可以保存任意对象,实际上我们应该让它泛型化,集合类&lt;元素类型&gt;, 添加元素...

    Java泛型,深入学习java的不二之选.md

    java泛型详细学习,深入学习java的不二之选

    java基础学习笔记之泛型

    泛型是Java编程语言中的一个重要特性,首次在JDK 1.5版本中引入,它允许程序员在定义类、接口和方法时使用类型参数,从而实现了类型的安全性和代码的复用性。泛型的主要目标是增强类型安全,避免在运行时出现...

    基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    在"基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip"这个压缩包中,包含了三个关键的Java编程概念:多线程、反射和泛型,以及正则表达式。下面我们将详细探讨这些知识点。 1. **多线程**:多线程...

    java多线程反射泛型及正则表达式学习笔记和源码.zip

    这个压缩包包含的“java多线程反射泛型及正则表达式学习笔记和源码”正是针对这些关键知识点的学习资料。 首先,我们来详细探讨多线程。在Java中,多线程允许程序同时执行多个不同的任务,提高了程序的并发性和效率...

    C++ Primer学习笔记——$11 泛型算法

    在C++编程中,泛型算法是标准库提供的强大工具,它们可以应用于各种不同类型的容器,无论容器内部存储的数据类型如何。这些算法不依赖于特定的容器实现,而是通过迭代器来操作容器中的元素,因此具有高度的通用性。...

    Learning hard C# 学习笔记

    《Learning Hard C# 学习笔记》是一份深入浅出的C#编程教程,旨在帮助初学者快速掌握C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、游戏开发(尤其是Unity引擎)、...

    基于Java的实例源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    总的来说,这个压缩包中的源码和学习笔记是深入理解并熟练运用Java多线程、反射、泛型和正则表达式的宝贵资源。通过研究这些实例,开发者不仅可以巩固理论知识,还能提升实际编程技巧,从而在日常工作中编写出更加...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    基于Java的源码-java多线程反射泛型及正则表达式学习笔记和源码.zip

    在这个压缩包中,你将找到与这些主题相关的学习笔记和源码示例。通过深入研究这些代码,你可以更深入地理解如何在实际项目中应用多线程、反射、泛型和正则表达式。同时,实践是掌握技术的关键,因此,尝试修改和扩展...

    基于Java的源码-多线程反射泛型及正则表达式学习笔记和源码.zip

    这份学习资料包括了相关的源码和笔记,旨在帮助开发者深入理解和掌握这些核心技能。 1. **Java多线程** Java中的多线程是并发编程的基础,它允许程序同时执行多个任务。在Java中,可以通过实现Runnable接口或继承...

    Go语言学习笔记.pdf

    为了深入了解Go语言,学习笔记通常包含语言的基本概念、语法特性、开发环境配置及核心功能的使用方法。 首先,Go语言相较于C++等传统编程语言,有一些显著的特征区别。Go语言为了简化设计,不支持函数重载和操作符...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    Java JDK 7学习笔记 PDF

    这个PDF学习笔记是开发者深入理解JDK 7特性和功能的重要参考资料。以下是对Java JDK 7的一些核心知识点的详细阐述: 1. **泛型改进**:在JDK 7中,泛型的使用更加灵活,引入了类型推断(Type Inference)特性,通过...

Global site tag (gtag.js) - Google Analytics