ArrayList LinkedList Set HashMap介绍

    在Java中提供了Collection和Map接口。其中List和Set继承了Collection接口;同时用Vector、ArrayList、LinkedList三个类实现List接口,HashSet、TreeSet实现Set接口

。直接有HashTable、HashMap、TreeMap实现Map接口。

    Vector基于Array的List,性能也就不可能超越Array,并且Vector是“sychronized”的,这个也是Vector和ArrayList的唯一的区别。
    ArrayList:同Vector一样是一个基于Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些。适用于顺序性的查找
    LinkedList:不同于前面两种List,它不是基于Array的,作为链表数据结构方式,所以不受Array性能的限制。当对LinkedList做添加,删除动作的时候只要更改nextNode的

相关信息就可以实现了,所以它适合于进行频繁进行插入和删除操作。这就是LinkedList的优势,当然对于元素的位置获取等方面就逊色很多。

    List:
        1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。
        2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
        3. 所有的List中可以有null元素,例如[ tom,null,1 ];
        4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

   

 

     虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的

根本区别。
    HashSet:HashSet的存储方式是把HashMap中的Key作为Set的对应存储项,HashMap的key是不能有重复的。HashSet能快速定位一个元素,但是放到HashSet中的对象需要实现

hashCode()方法。
    TreeSet:将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的。TreeSet不同于HashSet的根本是TreeSet是有序的。它是通过SortedMap来实现的。
    Set总结: 1. Set实现的基础是Map(HashMap);
              2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象,不能包含两个元素e1、e2(e1.equals(e2))。

 

 

    Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现: HashTable、HashMap和TreeMap。
    HashMap也用到了哈希码的算法,以便快速查找一个键,
    TreeMap则是对键按序存放,因此它有一些扩展的方法,比如firstKey(),lastKey()等。
    HashMap和Hashtable的区别。
          HashMap允许空(null)键(key)或值(value),由于非线程安全,效率上可能高于Hashtable。
          Hashtable不允许空(null)键(key)或值(value)。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HashSet是一种集合,其中的元素没有特定的顺序,且不允许重复元素。我们可以使用以下代码定义一个HashSet,并向其中添加元素: ```java import java.util.HashSet; public HashSet<String> defineHashSet(){ HashSet<String> set = new HashSet<>(); set.add("www.educoder.net"); return set; } ``` ArrayList是一种可变长度的列表,其中元素按照插入顺序排列,可以有重复元素。我们可以使用以下代码定义一个ArrayList,并向其中添加元素: ```java import java.util.ArrayList; public ArrayList<String> defineArrayList(){ ArrayList<String> list = new ArrayList<>(); list.add("www.educoder.net"); return list; } ``` LinkedList是一种可变长度的列表,其中元素按照插入顺序排列,可以有重复元素。与ArrayList相比,LinkedList在插入和删除元素时效率更高。我们可以使用以下代码定义一个LinkedList,并向其中添加元素: ```java import java.util.LinkedList; public LinkedList<String> defineLinkedList(){ LinkedList<String> list = new LinkedList<>(); list.add("www.educoder.net"); return list; } ``` HashMap是一种键值对映射表,其中的元素没有特定的顺序,且不允许重复的key。我们可以使用以下代码定义一个HashMap,并向其中添加元素: ```java import java.util.HashMap; public HashMap<String, String> defineHashMap(){ HashMap<String, String> map = new HashMap<>(); map.put("address", "www.educoder.net"); return map; } ``` 注意,这里的key是字符串类型,所以我们使用了`String`类型作为键的泛型参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值