JavaSE高级之集合类

简介:

​下面的内容是对java中的集合类进行的总结,过段时间会分享java的网路编程,多线程等内容,欢迎批评指正。

 

1.Java中的集合是用来存放对象的,即集合是对象的集合,对象是集合的元素,java API集合类位于java.util包中。

2.常用集合类:

  Collection接口,List接口, Set接口,Map接口。接口类结合泛型的使用

3.集合和数组的区别在于集合的长度是动态扩充的,数组中可以存放基本数据类型和引用数据类型,集合中只能存放引用数据类型。

4.java中的集合层次关系

  接口:

    Iterator

    |-Collection

    |    |-Lis

    |    |   |-ArrayList

    |    |   |-LinkedList

    |    |   |-Vector

    |    |       |-Stackt

    |    |-Set

    |       |-HashSet

    |       |-TreeSet

    |-ListIterator

 

  Map

    |-HashMap

    |-HashTable

    |-TreeMap

 

 

Collection接口:

  1.一个Collection对象中可以放不同类型的数据,是Set接口和List接口的父类,元素是否有序是否允许重复取决于具体的实现

  2.Set 为集合,元素无序且不允许重复,List 元素有序,允许重复。

  3.Collection中的常用方法如下:

    添加元素:add(element : object): Boolean

    移除元素:remove(element : object): Boolean

    元素个数:size () : int

    判断是否为空:isEmpty() : Boolean

    判断是否存在该元素:contains(element : objects) : Boolean

迭代器:iterator() : iterator

  产生一个包含所有元素的数组:object[] toArray();

 

List接口

  添加元素: add(index : int. element : object) 

  移除元素:remove(index : int) : object

  获取元素:get(index : int)

  设置元素:set(index : int , element:objects);

  获取元素的索引: indexOf(element : object) : int

迭代器: listIterator() : ListIterator 

 

 

Iterator 接口:

  Iterator称为迭代器,便于实现对容器元素的遍历,所有实现了接口Collection的集合类都有iterator()方法,返回一个实现了Iterator接口的对象,Iterator在遍历中只能单向进行,Iterator接口是为遍历设计的可以取出和删除集合中的元素,但不可以删除其中的元素

 

Iterator中的主要方法

  Object  next()  指向集合中的下一个元素

  Boolean hasNext()  判断是否还有下一个元素

  Void remove() 移除集合中的元素,执行next() 后只能执行一次remove();

 

Collections 类:

  Collections 类是类似于Arrays类的工具类,它提供一些static静态方法供集合类使用或用来操作集合类

 

Map接口:

  Map内存储的是以键/值对这样成对出现的对象组,通过“键”对象,来查找“值”对象,Map中的“键”是唯一的,key对象和value对象关联在一起

  Map接口中的常用方法:

  Object put(object key, object value) 添加键值对

  Object get(object key) 获取键对应的值

  Set keySet() 返回此映射中包含键的Set视图

 

 

HashMap与HashTable的比较:

  HashTable是线程安全的,也就是说是线程同步的,HashMap是线程不安全的

  HashMap允许将一个null作为一个entry的key或者value 二HashTable不允许

 

如何选择集合类

  Set内中存放的元素师不允许重复的,是无序的,List中的元素是有序的是允许重复的

  Map的应用主要是运用键/值对进行快速查询

  ArrayList和LinkedList 之间的区别在于随机查询的性能上ArrayList的性能要好,但LinkedList对中间元素的删除和添加要好

  HashSet和TreeSet的主要区别在于集合内的元素是否排序

 

泛型的使用

  泛型的作用是对集合中的类型进行限制,避免去元素时进行强制转换

 

  HashMap与Set的结合使用

package cn.sdut.lu;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
 
public class HashMapDemo {
 
    public static void main(String[] args) {
 
        //HashMap实例化
        HashMap hm = new HashMap();
 
        //往集合中添加元素
        hm.put(1,new Person("aa",12));
        hm.put(2,new Person("vv",15));
 
        //获取键视图
        Set s = hm.keySet();
 
        //利用迭代器遍历键视图
        Iterator I = s.iterator();
 
        //遍历键视图取得键值
        while(I.hasNext()){
            System.out.println(hm.get(I.next()));
        }
    }
}

相关文章
|
7月前
|
存储 缓存 算法
滚雪球学Java(62):HashSet的底层实现原理解析
【6月更文挑战第16天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
51 3
|
7月前
|
Java 测试技术 C++
滚雪球学Java(63):Java高级集合之TreeSet:什么是它,为什么使用它?
【6月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
47 0
|
8月前
|
安全 Java 容器
Java一分钟之-高级集合框架:并发集合(Collections.synchronizedXXX)
【5月更文挑战第18天】Java集合框架的`Collections.synchronizedXXX`方法可将普通集合转为线程安全,但使用时需注意常见问题和易错点。错误的同步范围(仅同步单个操作而非迭代)可能导致并发修改异常;错误地同步整个集合类可能引起死锁;并发遍历和修改集合需使用`Iterator`避免`ConcurrentModificationException`。示例代码展示了正确使用同步集合的方法。在复杂并发场景下,推荐使用`java.util.concurrent`包中的并发集合以提高性能。
99 3
|
7月前
|
Java
JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类
JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类
32 0
|
8月前
|
存储 安全 算法
JavaSE&集合框架
JavaSE&集合框架
43 1
|
8月前
|
Java
【Java高级】彻底弄懂lambda表达式(上)
【Java高级】彻底弄懂lambda表达式(上)
59 0
|
8月前
|
存储 安全 Java
JavaSE基础篇:泛型说明
JavaSE基础篇:泛型说明
|
8月前
|
存储 算法 Java
java数据结构,列举并解释Java中的集合框架(Collection Framework)。
java数据结构,列举并解释Java中的集合框架(Collection Framework)。
63 0
|
算法 Java 容器
深入探究Java集合工具类Collections的神奇功能
深入探究Java集合工具类Collections的神奇功能
111 0
|
存储 SpringCloudAlibaba 安全
JavaSE高级特性:反射
Java反射是框架的灵魂,大量框架底层都用到了反射机制,例如Spring.... Java反射是在**运行状态时**,可以构造任何一个类的对象,获取到任意一个对象所属的类信息,以及这个类的成员变量或者方法,可以调用任意一个对象的属性或者方法。可以理解为具备了**动态加载对象**以及**对对象的基本信息进行剖析和使用**的能力的一种机制。
121 0
JavaSE高级特性:反射

热门文章

最新文章

下一篇
开通oss服务