java集合

  /*
        Collection接口
        |---------List接口
            |----------ArrayList(主要实现类)
            |----------LinkedList(对于频繁的插入删除操作)
            |----------Vector(古老的实现类、线程安全但效率低于ArrayList)
        |--------- Set接口   存储无序的  不可重复的元素  Set中常用的方法都是Collection下定义的 无序性!=随机
            |---------HashSet  (主要实现类)
            |---------LinkedHashSet
            |---------TreeSet
         */
@Test
    public void testHashSet(){
        //无序性!=随机
        //不可重复性   得看  equals()方法 hashCode()方法       是否重写
        //进而保证Set元素得不可重复性
        //Set中的元素如何存储呢?   使用了哈希算法
        //当Set中添加对象时首先调用此对象所在类的HashCode()方法  计算此对象的哈希值  此哈希值决定了此对象在Set中的存储位置,若此位置没有对象存储,则直接存到这个位置
        //若此位置已有对象存储再通过 equals()比较这两个对象相同 如果相同后一个不能再添加进来  要求  hashCode()  equals() 方法一致

        Set set = new HashSet();
        set.add(123);
        set.add(465);
        set.add("AA");
        set.add("BB");
        set.add(null);

        Person p1 = new Person(2,"lisi");
        Person p2 = new Person(2,"lisi");
        System.out.println(p1.hashCode());
        System.out.println(p2.hashCode());
        System.out.println(p1.equals(p2));
        set.add(p1);
        set.add(p2);
        System.out.println(set.size());
        System.out.println(set);
    }
/*
 * 数组一旦创建  不可改变     数组存放对象不可增加   使用集合避免弊端
 */
public class TestCollection {
    @Test
    public void testCollection3() {
        Collection coll = new ArrayList();
        // size
        System.out.println(coll.size());
        // add
        coll.add(123);
        coll.add(new String("AA"));
        coll.add(new Date());
        coll.add("BB");
        coll.add(new Student("MM",23));
        
        Collection coll1 = new ArrayList();
        coll1.add(123);
        coll1.add(new String("AA"));

        // 10 removeAll(Collection coll):从当前集合中删除包含在coll中的元素
        coll.retainAll(coll1);
        System.out.println(coll1);
        
        //11  equals(Object obj):  判断所有元素是否完全相同     相同true
        Collection coll2 = new ArrayList();
        coll2.add(123);
        coll2.add(new String("AA"));
        System.out.println(coll1.equals(coll2));
        //12  hashCode():
        System.out.println(coll.hashCode());
        
        //13  toArray()  将集合转换成数组
        Object[] obj = coll.toArray();
        for (Object object : obj) {
            System.out.println(object);
        }
        
        //14  iterator() 返回以正确顺序在列表的元素上进行迭代的迭代器。遍历集合   返回一个 Iterator接口实现类对象 进而实现遍历
        Iterator iterator =  coll.iterator();
        //方式一
        /*System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());*/
        //方式二
        /*for(int i = 0;i<coll.size();i++) {
            System.out.println(iterator.next());
        }*/
        //方式三使用
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        
        
        
        
    }

    @Test
    public void testCollection2() {
        Collection coll = new ArrayList();
        //1 size
        System.out.println(coll.size());
        //2 add
        coll.add(123);
        coll.add("AAA");
        System.out.println(coll.size());
        // contains(Object obj)判断集合是否包含指定元素 包含则返回 true
        // 判断依据:根据元素所在在的类的equals()方法进行判断
        // 明确:如果存入集合元素是自定义类对象 要求自定义重写equals()方法
        boolean b1 = coll.contains(123);
        System.out.println(b1);
        Student s = new Student("张三", 33);
        coll.add(s);
        boolean b2 = coll.contains(s);
        System.out.println(b2);
        // 7containsAll(Conlection coll):判断当前几集合中是否包含coll中所有元素
        Collection coll1 = new ArrayList();
        coll1.add(123);
        coll1.add(new String("AAA"));
        boolean b3 = coll.containsAll(coll1);
        coll1.add(456);
        System.out.println("#" + b3);

        // 8、retainAll(Collection coll): 求当前集合与col1的元素共有的元素 返回给当前集合
        coll.retainAll(coll1);
        System.out.println(coll);

        // 9 remove(Object obj): 删除集合中obj 元素 成功返回 true
        boolean b4 = coll.remove("BB");
        System.out.println("#" + b4);

        // 10 removeAll(Collection coll):删除所有
        coll.retainAll(coll);
    }

    @Test
    public void testCollection1() {
        Collection coll = new ArrayList();
        //1 size
        System.out.println(coll.size());
        //2 add
        coll.add(123);
        coll.add("AAA");
        coll.add(new Date());
        System.out.println(coll.size());
        //3 addAll()                     Arrays.asList(1, 2, 3);    数组转换集合
        Collection coll1 = Arrays.asList(1, 2, 3);
        coll.addAll(coll1);
        System.out.println(coll.size());

        // 查看集合元素
        System.out.println(coll);
        //4 isEmpty() 判断集合是否为空
        System.out.println(coll.isEmpty());
        //5 清空集合
        coll.clear();
        System.out.println(coll.size());
    }

@Test
    public void testFor2() {
        String[] str = new String[]{"AA","BB","DD"};
        for(String s:str) {
            s= "M";  //记住s定义的是局部变量  其值不会改变  增强for
            System.out.println(s);
        }
        for(int i = 0;i<str.length;i++) {
            System.out.println(str[i]);
        }
    }
    
    @Test
    public void testFor() {
        Collection coll = new ArrayList();
        // siz  e
        System.out.println(coll.size());
        // add
        coll.add(123);
        coll.add(new String("AA"));
        coll.add(new Date());
        coll.add("BB");
        coll.add(new Student("MM",23));
        
        for (Object i : coll) {
            System.out.println(i);
        }
    }

    //错误写法
    @Test
    public void test2() {
        Collection coll = new ArrayList();
        // size
        System.out.println(coll.size());
        // add
        coll.add(123);
        coll.add(new String("AA"));
        coll.add(new Date());
        coll.add("BB");
        coll.add(new Student("MM",23));
        
        Iterator i = coll.iterator();
        while(i.next()!=null) {
            //java.util.NoSuchElementException
            System.out.println(i.next());
        }
    }
    //正确写法使用迭代器
    @Test
    public void test1() {
        Collection coll = new ArrayList();
        // size
        System.out.println(coll.size());
        // add
        coll.add(123);
        coll.add(new String("AA"));
        coll.add(new Date());
        coll.add("BB");
        coll.add(new Student("MM",23));
        
        Iterator i = coll.iterator();
        while(i.hasNext()) {
            System.out.println(i.next());
        }
    }

 

posted @ 2019-05-16 19:42  Coding小马  阅读(168)  评论(0编辑  收藏  举报