集合之我见

--------List之我见:先贴码了。-------------------
public class ListTest {
    
    public static void main(String[] args) {
        LinkedListTest();
    }
   
    /*ArrayList: 方法都差不多,ArrayList 是基于数组。当容量满了时,增加原容量的一半。线程不同步。
    查找循环遍历比较方便,但插入,删除等都要移动数据,一般数据量小的时候使用与ArrayList。*/
     
    /*LinkedList 实际为链表 ,其内存空间不连续,不受Array 性能的限制,一个节包含了当前节点的数据和下一个节点的信息。所以插入或者删除的时候,不用大量移动数据。 当插入或者删除频繁时,选择LinkedList更好些,遍历的时候比较忙*/
    private static void LinkedListTest() {
        LinkedList  linklist=new LinkedList();
        linklist.add("aa");
        linklist.add("bb");
        linklist.add("cc");
        linklist.add("dd");
        for (int i = 0; i < linklist.size(); i++) {
            System.out.println(linklist.get(i));
        }
    }

       //都实现了List 接口。 ArrayList 默认大小是0  而 Vector 默认大小是10
    //Vector  基于数组,向量的大小大于其容量时,容量自动增加的量,增长原来的一倍。它是线程同步的。    
}


--------------Set之我见: ------------------
public class SetTest {
    //都实现set 接口
    public static void main(String[] args) {
        treeSetTest2();
    }
    
    
    //set特点:不可以将相同的对象放入到set 容器中。若放的是自定义的对象,则对象需要重写hashCode方法
    public static void hashSetTest() {
        HashSet hs=new HashSet();
        hs.add(1);
        hs.add(3);
        hs.add(2);
        hs.add(3);//测试放入相同的对象,则覆盖
        for (Object object : hs) {
            System.out.println(object);
        }
    }
    
    //hashSet 存入自定义对象学生类,要重写hashCode()方法和equals()方法
     public static  void setObject(){
            HashSet<Student> hs=new HashSet<Student>();
            hs.add(new Student(1,"aa"));
            hs.add(new Student(2,"bb"));
            hs.add(new Student(3,"cc"));
            hs.add(new Student(2,"bb"));//测试放入相同的对象
            for (Object object : hs) {
                System.out.println(object);
            }
    }
     
     public static void treeSetTest1(){
         TreeSet ts=new TreeSet();
         ts.add(1);
        ts.add(2);
        ts.add(3);
        ts.add(2);//测试放入相同的对象
        for (Object object : ts) {
            System.out.println(object);
        }
     }
     
     //treeSet 存放的对象一定要是可排序类型的,自定义的类可以实现 comparable 接口
     public static void treeSetTest2(){
         TreeSet<Student> ts=new TreeSet<Student>();
         ts.add(new Student(1,"aa"));
        ts.add(new Student(2,"bb"));
        ts.add(new Student(3,"cc"));
        ts.add(new Student(2,"bb"));//测试放入相同的对象
        for (Object object : ts) {
            System.out.println(object);
        }
     }
}

--------------------Map之我见: ------------------
public class MapTest {
    //map容易的特点:键可以出现null。键不能够重复,值可以重复 (也就是一对多)。键若重复了,则原来的值会被覆盖。
    //map 接口没有继承Iterable 接口,遍历的时候用keySet
    public static void main(String[] args) {
        hashMapTest();
    }
    // 若出现了多个键,则以最后一个键值对存储,前面的会被覆盖。hashMap也实现了哈希算法。
    public static void hashMapTest() {
        HashMap<Integer, String> hm = new HashMap<Integer, String>();
        hm.put(1, "aa");
        hm.put(2, "bb");
        hm.put(3, "cc");
        hm.put(4, "cc");
        hm.put(null"dd");
        for (Integer o : hm.keySet()) {
            System.out.println(hm.get(o));
        }
    }
    
    //treeMap 会按照键的顺序来存放的。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值