Java 笔记之 ---集合总结

Collection (接口,集合框架的最高父类)

同一个集合可以存放不同类型的元素,但是不建议这么使用

同一个集合放同一种数据类型元素才有意义


两个接口


    List 有顺序的,可重复的

    用户可以根据元素的整数索引(在列表中的位置)访问元素

    Set  无序的,不可重复的

List接口:

    ArrayList(底层就是数组,大小可以伸缩) 不适合插入和删除

    Vector(跟ArrayList是很相似,比较古老,不推荐使用,如果用到线程,建议使用)

    LinkedList(双向链表实现的类) 适合插入和删除


Set接口  没有get()的,不可以根据index来获取值

    HashSet(根据哈希桶存储,不可重复)

    LinkedHashSet  // 一般情况下不用使用,效率比较低,建议HashSet

    TreeSet 实现了自然排序的功能(二叉树)

     通过两个方法比较的

        Comparable接口 compareTo()  lang包

        Comparator接口 compare()    util包

     如果使用TreeSet集合来存储自定义的类中的对象,

     自定义类中必须要实现上面两个接口中的一个,并且重写相应的方法。

     否则没办法存储
        

---------------------------

Map (映射,也叫视图 view  有键和值)

    HashMap

    HashTable

    LinkedHashSet

---------------------------

ArrayList:大小可变

特点:数组的元素存放顺序是按存入的顺序实现的

不方便的地方:不能经常用来插入和删除元素


LinkedList:采用双向列表的底层实现

优点:在进行元素添加和删除的时候,效率很高

-----------------------------------
数据结构

    队列  先进先出  ==》 排队

    栈    先进后出  ==>  子弹夹

-------------------------------------------

TreeSet 在存储的时候,必须指定排列顺序
 *
 * 1.这个类实现Comparable,重写compareTo(),
 *
 *  存在的集合中的时候
 *  
 *  按照compareTo的条件来排序 ,只能按照一个条件来排序
 *
 * 2.在创建集合的时候,指定好了存储的顺序 (建议使用)
 *
 *      写一个排序的类,要实现Comparator接口,重写compare()
 *
 *  用这个排序类的对象,来创建集合
 *  
 *  TreeSet(Comparator c)

-------------------------------------------------

在多线程的情况下,同时涉及到了集合。

注意:集合的同步性,建议锁定

-------------------------------------------------



/******************************************************************************************************************************/
*                                                                                                                                                                               *
*                                              
                                                          HashMap三种遍历 实例操作                                                                       *                                                                                                                                                                                     *
*                                                                                                                                                                               *

/******************************************************************************************************************************/

public class HashMapDemo {
    public static void main(String[] args) {
        HashMap<String ,Person> maps = new HashMap<String, Person>();
        Person per1  = new Person("zhang1",12);
        Person per2  = new Person("zhang2",123);

        //put有两个作用  一放值   二返回对象
        maps.put("张三",per1);
        Person per = maps.put("张三",per2);//默认返回Person对象
        System.out.println("Per........."+per.getAge()+per.name);


        //遍历keySet 方法一
        for (String key : maps.keySet()) {
            maps.get(key).toString();
        }
        
        //遍历方法二
        Set<Entry<String,Person>> sets = maps.entrySet();
        for (Entry<String,Person> entry:sets ) {    
            System.out.println("姓名:"+entry.getKey()+"  年龄:"+entry.getValue().age);            
        }
        
        //遍历方法三
        Set<String> set =maps.keySet();
        Iterator its = set.iterator();
        while (its.hasNext()) {
        String str = (String)its.next();
        System.out.println("Person....."+str.toString());    
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值