zoukankan      html  css  js  c++  java
  • 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());
            }
        }
  • 相关阅读:
    ViewPager留出边 显示左右两边的视图
    Retrofit 2.0 上传文件
    android一个app打开另一个app的指定页面
    Java多线程消费者、生产者的基本思路
    Android 8.0+ 更新安装apk失败的问题
    Android 8.0+ 通知不显示的适配
    android 7.0+ FileProvider 访问隐私文件 相册、相机、安装应用的适配
    android 6.0+ 动态权限 拒绝不再询问后跳转设置应用详情页面
    ViewPager中Fragment的重复创建、复用问题
    Android源码学习(2) Handler之Looper
  • 原文地址:https://www.cnblogs.com/mzdljgz/p/10877592.html
Copyright © 2011-2022 走看看