精华内容
下载资源
问答
  • list Set

    千次阅读 2015-04-07 10:00:57
    list Set
    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
    Map
    ├Hashtable
    ├HashMap
    └WeakHashMap
    一、Collection接口
      Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
    Set无序结合,不可重复
    List有序集合,允许重复
    (1)List接口
      List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。

    Vector和ArrayList区别
    Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
    Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
    当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

    (2)Set接口
      Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个 null元素。
      很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
      请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

    (3)Map接口
      请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

    总结
      如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用 ArrayList。
      如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
      要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
      尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

    连接:http://blog.gxnews.com.cn/u/1/a/75979.html

    更多Flex 4教程,请参见http://flex4jiaocheng.com
    展开全文
  • List和Set

    千次阅读 2019-07-07 18:51:34
    接口 List 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入...更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接...

    接口 List

     有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
    

    特点:有序的(添加顺序和输出顺序一致),不去重复,列表通常允许重复的元素,有index

    所有超级接口:Collection, Iterable

    1、Collection接口中的方法:

    增加
    add(E e) 添加成功返回true,添加 失败返回false.
    addAll(Collection c) 把一个集合 的元素添加到另外一个集合中去。
    删除
    clear() 移除此 collection 中的所有元素(可选操作)。
    remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
    removeAll(Collection c) 删除指定集合中包含的所有此集合的元素(可选操作)。
    retainAll(Collection c) 仅保留此集合中包含在指定集合中的元素(可选操作)。
    判断
    isEmpty()
    contains(Object o) 其实contains方法内部是依赖于equals方法进行比较的。
    containsAll(Collection<?> c)
    查看
    size()
    iterator() 注意:默认指向集合的首位
    迭代器的作用:就是用于抓取集合中的元素。
    2、 Iterable迭代器的方法:
    hasNext() 是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。
    next() 获取元素,并移动到集合下一个位置
    remove() 移除迭代器最后一次返回 的元素。
    注意:迭代器在打开后,不要再随意修改集合

    常用已知实现类: ArrayList,LinkedList, Vector

    1、ArrayList
    Object[]可变数组,默认长度为0,当add添加元素时,初始化长度为DEFAULT_CAPACITY=10
    int newCapacity = oldCapacity + (oldCapacity >> 1),每次扩容,会增长0.5倍
    线程不安全,查询效率高,修改效率低,Arrays.copyOf()
    2、Vector
    Object[]可变数组,线程安全的,效率低
    3、LinkedList
    双向链表,查询效率低,修改效率高

    接口 Set

    一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。
    

    Set和List使用基本(CRUD)一致,但没有提供index相关操作
    特点:set去除重复元素,无序的

    所有超级接口: Collection, Iterable

    同List基本相同。

    常用已知实现类:HashSet, TreeSet

    1、HashSet
    此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
    HashSet先执行hashCode()返回 set 的哈希码值:(1)哈希码值不同,元素则直接放入哈希表中;(2) 如果哈希码值一致将调用equals(Object o) : 比较指定对象与此 set 的相等性来判断是否元素是否重复,如果返回结果为真则去除重复,如果返回结果为假,则放入同一个“桶”中。
    2、TreeSet
    基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
    去重复,输出顺序是"自然排序" 。

    如何判断自然排序,去除重复?
    执行:
    (1)如果元素已经具备比较功能,例如String,int,可以直接添加
    (2)如果元素没有具备比较功能,例如自定义Person类,实现Comparable接口,重写compareTo方法
    (3)当重写比较方法时,如果返回值为零,则认为是重复元素
    去除重复?
    跟hashcode和equals无关,跟比较的方法返回值有关。
    (4)如果元素没有具备比较功能,也可以实现比较器Comparator,重写Comparator方法,并且把比较器传递给TreeSet----推荐
    (5)当实现Comparable接口,也实现比较器Comparator,优先调用比较器Comparator

    展开全文
  • 我们为什么要使用List和Set(List,Set详解)

    万次阅读 多人点赞 2017-04-01 12:04:28
    我们为什么要使用List和Set(List,Set详解)

    这里写图片描述

    1、集合概述


    类图

    这里写图片描述

    集合和数组的区别?

    这里写图片描述

    集合基本方法

    这里写图片描述

    集合特有的遍历方式?
                    public static void main(String[] args) {
                        //创建集合对象
                        Collection c = new ArrayList();
    
                        //创建并添加元素
                        c.add("hello");
                        c.add("world");
                        c.add("java");
    
                        //遍历集合
                        Iterator it = c.iterator();
                        while(it.hasNext()) {
                            String s =(String) it.next();
                            System.out.println(s);
                        }
                    }

    2、List和Set概述


    List和Set区别?

    这里写图片描述

    3、List


    List特点和实现类

    这里写图片描述

    有关线程安全的知识,参考http://blog.csdn.net/qq_34149805/article/details/64128499

    有关链表的知识,参考http://blog.csdn.net/qq_34149805/article/details/67117288

    4、Set


    Set特点

    Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)

    Set 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

    Set实现类

    这里写图片描述

    5、总结


    数据结构
    ArrayXxx:底层数据结构是数组,查询快,增删慢
    
    LinkedXxx:底层数据结构是链表,查询慢,增删快
    
    HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
    
    TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
    
    我们为何使用它们?

    这里写图片描述

    相关链接Java Map 超详细汇总

    展开全文
  • List Set 区别

    2018-10-24 22:41:03
    正如图一,list和set是实现了collection接口的。   (图二) List:1.可以允许重复的对象。  2.可以插入多个null元素。  3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。  ...

    说说collection里面有什么子类。

    (其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set)

    正如图一,list和set是实现了collection接口的。

     

    (图二)

    List:1.可以允许重复的对象。

        2.可以插入多个null元素。

            3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。

            4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。

     

     (图三)

     Set:1.不允许重复对象

         2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator  或者 Comparable 维护了一个排序顺序。

            3. 只允许一个 null 元素

            4.Set 接口最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap 实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和 compareTo() 的定义进行排序的有序容器。

     

    (图四)

    1.Map不是collection的子接口或者实现类。Map是一个接口。

    2.Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。

    3. TreeMap 也通过 Comparator  或者 Comparable 维护了一个排序顺序。

    4. Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。

    5.Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)

     

     

    2.面试题:什么场景下使用list,set,map呢?

    (或者会问为什么这里要用list、或者set、map,这里回答它们的优缺点就可以了)

    答:

    1. 如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问,如果经常添加删除元素的,那么肯定要选择LinkedList。

    2. 如果你想容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。

    3. 如果你想保证插入元素的唯一性,也就是你不想有重复值的出现,那么可以选择一个 Set 的实现类,比如 HashSet、LinkedHashSet 或者 TreeSet。所有 Set 的实现类都遵循了统一约束比如唯一性,而且还提供了额外的特性比如 TreeSet 还是一个 SortedSet,所有存储于 TreeSet 中的元素可以使用 Java 里的 Comparator 或者 Comparable 进行排序。LinkedHashSet 也按照元素的插入顺序对它们进行存储。

    4. 如果你以键和值的形式进行数据存储那么 Map 是你正确的选择。你可以根据你的后续需要从 Hashtable、HashMap、TreeMap 中进行选择。

    大家可以跟着下面的步骤一起尝试一下。

    1.我们知道了列表要实现排序,需要重写comparable接口的compareTo的方法。

    但是是我不知道comparaTo里面要怎么写呢,它有传入参数吗?它有返回值吗?如果有事什么类型的呢?ok,下面一起来做一下。先把这个链接的帮助文档下载下来。下载完之后,打开帮助文档,

     

     

    2.看完了帮助文档是不是心里稍微有点底气了呢,那现在打开eclipse我们一起来写一写吧。

    首先我们要比较对象的哪个属性呢。年龄?身高?还是体重?刚刚看帮助文档已经知道了,所以下面大家一起来写一下。

     如果大家也是像上图这种写法,那么再想一想有没有更好的办法。(我这样吻是肯定有的,好好看看帮助文档,你就知道了,我知道你只要用心想想,肯定想出来的!)

    好了,写完年龄,不去继续花几分钟把按照身高来排序也写一下吧。

    展开全文
  • List和Set的特点

    2018-12-10 17:04:32
    1 List和Set 2 ArrayList和LinkedList、Vector 3 HashSet和TreeSet 1 List和Set (1)共同特点:都继承Collection。 (2)元素特点:List有序,元素可重复;Set无序(TreeSet为有序),元素不可重复。 (3)...
  • List和Set的区别?

    千次阅读 2019-07-02 19:14:48
    List和Set的区别? Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现...
  • List和Set的区别

    万次阅读 多人点赞 2017-07-26 17:23:45
    Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和...Collection是最基本的集合接口,声明了适用于JAVA集合的通用方法,list和set都继承自collection接口。
  • import java.util.*; /* * List和Set对比 * */ public class ListVSSet { public static void main(String[] args) { List<String> list=new ArrayList<...
  • Connection 中的List和Set

    2016-10-04 23:15:22
    Connection及其两个接口List和Set
  • java面试之 list和set的区别

    千次阅读 2019-02-14 18:27:54
    比如大家都遇到过,list和set有什么区别,你回答list有序可重复,set无效不可重复,如果这样回答会不会更好呢 List和set都是继承collection接口,存放对象,不同的是list存放有序可以重复的元素,set存放的无序不可...
  • Java中List和set的区别

    千次阅读 2018-10-14 19:16:03
    Java中List和set的区别 首先要知道 set和list都是集合接口 list ——其中的值允许重复,因为它是有自己的排序规则的数据结构 Set——其中的值不允许重复,无序的数据结构 知道了数据结构就得了解: List适合经常追加...
  • 1-2 map和list和set-ThreadLocal-finally-finalize1-map和list和set1-1 各自分集合1-2 区别1-3 ArrayList和LinkedList区别1-4 List的遍历方式和效率2-ThreadLocal2-1介绍2-2 原理2-3 源码2-4 ThreadLocal导致的内存...
  • C++STL-list和set

    千次阅读 2016-03-04 20:01:44
    C++STL-list和setlist#include #include #include<list> using namespace std; int main() { list<int> a1; list<int>::iterator it; for (int i = 1; i ; i++) { a1.push_b
  • Java List Set,Array 之间互相转换

    千次阅读 2018-06-12 20:43:26
    Java List Set 之间互相转换 参考 SetList之间转化 import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Test; public class ...
  • java中List和Set的区别

    2016-08-27 19:44:50
    java中List和Set的区别 共同点:  1:两者都有共同的父类 :继承自Collection接口 不同点: 1: List特点:元素有放入顺序,元素可重复 , Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无...
  • List和Set List Set 三种集合解析 我觉得学习Java集合最重要的还是List,Set和Map,我们要对这三种集合有一个非常清楚的认识,都是存放数据对象,Map区别两者存放的是含有映射关系的对象就是key-value的...
  • Java删除List和Set集合中元素

    千次阅读 2016-12-28 15:01:46
    今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录如下: 错误代码的写法,也就是报...
  • List和Set区别

    2018-10-25 18:37:21
    常用的实现类有 ArrayList、LinkedList Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。 ArrayList 底层数组形...
  • List和Set的基本特征在Java的List和Set接口中被抽象出来,然后List和Set的各种实现都在相应接口之上增加了特定的特征。例如,Java中的ArrayList是由Array支持的List实现,而LinkedList是另一个像链接列表数据结构...
  • list和set的区别

    千次阅读 2018-08-30 09:26:57
    list:列表,表达形式 [ ],或者list(),有序,通过索引值进行查找 set:集合,表达形式set([ ]),无序自动去重 2 常见应用方法: list:依据索引值,进行内部的增删改查作业 set: 集合的交集,并集,差集 myset_...
  • List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet) List 线性表 Set 唯一数据集   ArrayList 底层数组实现 地址连续 查询/更改速度快 , 插入/删除速度慢。 Vector 底层数组...
  • Java中的集合(List和Set

    千次阅读 2016-08-24 22:46:29
    Java容器类主要是为了“保存对象”,并将其划分为两个不同的概念:Collection,独立元素的集合,这些元素都服从一条或多条规则,如List必须按照插入顺序保存元素,...本篇文章主要讲List和Set的实现细节和具体的操作。
  • python中的list和set,np.array之间的转换

    千次阅读 2020-03-15 21:34:33
    list和set的区别 list中可以有重复的元素,但是集合set中不能有重复的元素。 集合的性质: 无序性,集合中的元素没有先后顺序之分,因此比较两个集合是否相等,就看两者中的元素是否一致,不考虑他们的排列顺序 互...
  • Java Collection中List和Set的区别

    千次阅读 2013-12-23 13:10:39
    从本质上来说,List和Set均是接口,且继承了Collection接口。我们经常用到的ArrayList、HashSet分别是继承了List和Set接口,由于用到了泛型,在实际运用时可以指定实际的类型来使用。通常我们用它们来存储对象,当然...
  • list和set集合是java中最常见的两种数据结构,都是Collection的子集,今天就简单的说说他们两者的遍历以及相互转化吧。 一、list的遍历 有三种遍历方法: /**  * list的三种遍历  * @author Owner  ...
  • 闲来无事,看了一天java源码,遇到一个问题,list和set和数组之间相互转换,有没有简单的方法,特地总结了一下,假如有错误,请在博客下面留言.package cn.yh.test; import java.util.ArrayList; import java.util.Arrays;...
  • 讲一下容器list和set的区别

    千次阅读 2012-03-18 09:55:53
    (一)list和set是什么区别呢? list里面存的元素是有序的并且是可以重复的,但是set里面存的元素是无序的并且不能重复 用下面两个代码就可以看出来: public static void test1(){ /* * Set是没有顺序...
  • Java中集合容器类List和Set的用法   【摘 要】 List(interface):次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素;Set...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,345
精华内容 14,138
关键字:

list和set