笔记--集合

单例集合

----------| Collection 单例集合 的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList底层是使用了Object数组实现 的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList底层是使用了链表数据结构实现的。特点: 查询速度慢,增删快
-------------------| Vector 底层是使用了Object数组实现 的, 实现原理与ArrayList 是一致的,但是是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表实现 的。 特点: 存取速度快。

HashSet存储元素的原理:
往hashSet添加元素的时候,首先会调用元素的hashCode方法得到元素的哈希码值,然后把哈希码值经过运算算出该元素存在哈希表中的位置。

情况1:如果算出的位置目前还没有存在任何的元素,那么该元素可以直接添加到哈希表中。

情况2: 如果算出的位置目前已经存在其他的元素,那么还会调用元素 的equals方法再与这个位置上 的元素比较一次。
如果equals方法返回的是true,那么该元素被视为重复元素,不允许添加。如果equals方法返回 的是false,那么该元素也可以被添加。
------------------| TreeSet 底层是使用了红黑树(二叉树)数据结构实现的。 特点: 对集合中的元素进行排序存储、。

TreeSet要注意的事项:
1. 往TreeSet添加元素 的时候,如果元素具备自然顺序的特点,那么TreeSet会根据元素 的自然顺序特性进行排序 存储。
2. 往TreeSet添加元素 的时候,如果元素不具备自然顺序的特点,那么元素所属的类就必须要实现Comparable接口,把比较的规则定义在CompareTo方法上。
3. 往TreeSet添加元素 的时候,如果元素不具备自然顺序的特点,那么元素所属的类就也没有实现Comparable接口,那么在创建TreeSet对象的时候必须要传入比较器对象。

比较器 的定义格式:

class 类名 implements Comparator{
}

双列集合
----------| Map 存储的数据都是以键值对的形式存在的,键可以不重复,值可重复。
-------------| HashMap 底层也是使用了哈希表实现的。
-------------| TreeMap 底层也是使用了红黑树数据结构实现的。

public class Demo2 {

    public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<String>();
        //使用get方法遍历。
        list.add("张三");
        list.add("李四");
        list.add("王五");

        System.out.println("======get方式遍历=========");
        for(int i = 0 ; i < list.size() ; i++){
            System.out.print(list.get(i)+",");
        }

        //使用迭代器  注意: 迭代器在迭代的 过程中不能使用集合对象修改集合中的元素个数。如果需要修改要使用迭代器的方法进行修改,
        System.out.println("\r\n======迭代器方式遍历=========");
        HashSet<String> set = new HashSet<String>();
        set.add("狗娃");
        set.add("狗剩");
        set.add("铁蛋");

        /*Iterator<String> it = set.iterator();    //获取到迭代器
        while(it.hasNext()){
            System.out.print(it.next()+",");
        }
        */

        for(String item : set){
            System.out.print(item+",");
        }

        System.out.println("\r\n======entrySet方式遍历=========");
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("张三","001");
        map.put("李四","002");
        map.put("王五","003");
        Set<Entry<String,String>> entrys = map.entrySet(); //
        for (Entry<String,String> entry : entrys) {
            System.out.println("键:"+entry.getKey()+" 值:"+entry.getValue());
        }

    }

}
时间: 2024-10-10 02:26:15

笔记--集合的相关文章

C语言、数据结构笔记集合

链表中的“p->next” p->next到底是指p的下一个节点还是p的指针域呢?p是一个指针,那么p->next也应该是一个指针,即p->next应该是一个地址,因此p->next其实是p指向的节点的指针域(next域),所以p->next还是属于当前节点的,只不过它是下一个节点的地址罢了.所以如果函数返回“p->next”,那么函数的类型应为指针函数. 如何让VS2013进行C编程的时候使用基本库函数不会得到警告 把VS项目创建中的安全周期检查关闭就可以任意使

&lt;代码整洁之道&gt;、&lt;java与模式&gt;、&lt;head first设计模式&gt;读书笔记集合

一.前言                                                                                       几个月前的看书笔记,内容全部都是摘自书中比较精辟的句子.笔记都是一段一段的句子,故没有文章的篇幅概念,仅供温习之用,更多详细内容请看原书!!! <代码整洁之道>里面有很多前人编写简洁.漂亮代码的经验.当然书中作者的经验并不100%适合每个人,但大部分都是可借鉴的! <java与模式>这本书内容太多了,我

java课堂笔记------集合api

Collection c = new ArrayList(); * boolean add(E e) * 将当前集合中添加给定的元素 * 若成功添加则返回true c.add("one"); c.add("two"); * int size() * 获取当前集合中的元素个数 c.size(); * boolean isEmpty() * 判断当前集合是否不包含任何元素 * 当集合中没有元素时返回true boolean isEmpty = c.isEmpty();

python笔记--集合

集合set set和dict类似,也是一组key的集合,但不存储value.所以,特点是无序.不重复.基本功能包括消除重复元素和关系测试. 集合对象还支持并.交.差.对称差数学运算. 一.定义集合 >>> s=set([1,2,3]) >>> s set([1, 2, 3]) 要创建一个set,需要提供一个list作为输入集合, 注意:传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[

Java学习笔记----------集合Set

Java集合-----Set集合:就像一种容器,可以把多个对象放进该容器中.Java集合分为:Set.List.Map三种体系. Set:无序的,不可重复的: List:有序的,可重复的: Map:代表有映射关系的集合,Map保存的每一项数据都是key-value对.注意:Java 5后添加了Queue体系,代表一种队列集合实现. 集合和数组对比:1.数组一旦初始化,长度不可变:2.数组无法保存具有映射关系的数据,例如成绩表:语文---79:3.数组的元素可以是基本类型的值,也可以是对象,而集合

java学习笔记 --- 集合

1.定义:集合是一种容器,专门用来存储对象 数组和集合的区别?   A:长度区别  数组的长度固定 集合长度可变 B:内容不同  数组存储的是同一种类型的元素  而集合可以存储不同类型的元素  C:元素的数据类型问题  数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用类型 2.集合的继承体系结构 由于需求不同,Java就提供了不同的集合类.这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,   我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图.  

Python笔记-集合,拷贝

对于列表,元组,集合的异同,有如下解释 #list ----> 允许重复的集合,修改# tuple ----> 允许重复的集合,不修改# set ----> 不允许重复的集合下面是示例代码: 1 s1 = set() 2 s2 = {1,2,3,4} 3 s3 = set([11,22,33,44]) 4 s4 = {3,4,5,6,89} 5 print type(s2) #<type 'set'> 6 s1.add(44) 7 print s1 #set([44]) 8

【转】jmeter学习笔记——集合点

JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现. JMeter里面的集合点通过添加定时器来完成. 注意:集合点的位置一定要在Sample之前. 集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,拿那个用户和密码的地方,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问. 1.接着之前创建的脚本,右键点击 线程组---->定时器-

Hibernate笔记③--集合映射、组合映射、联合主键、查询案例

lazy 懒加载 默认为proxy ? 继承映射 discriminant column="type" type="string" ? 集合映射 生成表的语句: public class DbCreate { ????public static void main(String[] args) { ????????Configuration cfg=new Configuration().configure("/hibernate.cfg.xml"