• 集合练习


    package com.lianxi;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Random;
    import java.util.Set;
    
    import com.hanqi.DataSourceModel;
    import com.hanqi.Student;
    
    public class Practise {
    
        public static void main(String[] args) {
            /*
             * 准备数据
             * 定义一个Student类, 有两个属性, name和age
             * 定义一个DataSourceModel类, 分别定义三个方法, 
             * 这三个方法分别可以获取到含有内容的List<Student>, Set<Student>, Map<Integer, Student>
             * Map中的key值, 作为Student的学号, 学号采用自增的方式:从1001开始
             * 
             * List练习:
             *         添加一个学生, 姓名为"Paulo", 年龄为29, 并显示出所有学生姓名
             *         删除Jim的信息
             *         将所有学生信息按照年龄排序, 由大到小显示出来
             *         写一个方法, 将学生分为三组, 并将每组信息显示出来
             *         写一个方法, 在数据源中删除重复的学生信息
             *         显示出姓名以J开头的学生信息
             *         显示出年龄大于25的学生信息
             * Set练习
             *         重写Student的equals方法, 使得在获取Set的时候没有重复的学生信息
             *         显示所有学生信息(不带重复)
             * Map练习
             *         显示所有学生信息, 带学号
             *         将第二个Odom更名为Tomson, 并将更名后的学生信息再显示出来
             *         将学号为1007的学生删除, 并将删除的学生信息显示
             * 
             *         Iterator练习
             *             取出所有的学号, 迭代之后显示学号为1004-1009
             *             并将1005学号的信息删除, 删除之后再显示出所有学生信息
             * 选做练习
             *         ?定义一个专业(Major)类, 属性自拟, 学生信息和这个类关联, 一个学生可以有多个专业
             *         ?显示所有学生的姓名和所学专业
             */
            //添加一个学生, 姓名为"Paulo", 年龄为29, 并显示出所有学生姓名
            List<Student> list=DataSourceModel.getStuList();
            Student stu14 = new Student("Paulo", 29);
            list.add(stu14);
            for(Student stu:list){
                System.out.println(stu.getName());
            }
            System.out.println();
            //删除Jim的信息
            Student stu15 = new Student("Jim", 22);
            list.remove(stu15);
            System.out.println(list);
            //将所有学生信息按照年龄排序, 由大到小显示出来
            Random r = new Random();
            Collections.sort(list);
            System.out.println(list);
    
    /*        int x=14;
            int group = 5;
    
            for (int i = 0; i < x; i++) {
                list.add("no" + i);
            }
    
            for (int i = 0; i < x; i++) {
                if (i % group == 0) {
                    System.out.println("第" + (i / group + 1) + "组");
                }
                int s = r.nextInt(x - i);
                if (list.size() == 0) {
                    break;
                }
                System.out.println(list.remove(s));
            }*/
            System.out.println("==============");
            int a=0;
            for(int i=0;i<list.size();i++){
                for(int j=0;j<list.size();j++){
                    if(list.get(i).equals(list.get(j))&&i!=j ){
                        list.remove(i);
                    }
            }
        }
            System.out.println(list.size());
            System.out.println();
            for(Student s:list){
                if(s.getName().startsWith("J")){
                    System.out.println(s.getName()+","+s.getAge());
                }
            }
            
            
            Set s=DataSourceModel.getStuSet();
            System.out.println(s);
            System.out.println(s.size());
            System.out.println();
            
            Map m=DataSourceModel.getStuMap();
            System.out.println(m);
            m.remove(1007);
            System.out.println("======================");
            System.out.println(m);
            
            
            System.out.println("======================");
            Set<Integer> setKey=m.keySet();
            Iterator<Integer> i= setKey.iterator();
            while(i.hasNext()){
                int sno=i.next();
                if(sno>=1004&&sno<=1009){
                     if(sno==1005){
                         i.remove();
                     }
                     System.out.println(sno+"---"+m.get(sno));
                }
                
            }
            
        }
    
    }

    package com.hanqi.jihe;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Lianxi {
        public static void main(String[] args) {
            List list=new ArrayList();
            list.add("qqq");
            list.add("rrr");
            list.add("sss");
            list.add("ttt");
            list.add("yyy");
            //没有下标可以提前定义int a =0;
        /*    int a =0;
            for(Object s:list){
                a++;
                System.out.println(s);
                System.out.println(a);
            }
            */
    /*        System.out.println(list);
            Collections.sort(list);
            System.out.println(list);
            Collections.shuffle(list);
            System.out.println(list);*/
    /*        Map m=new HashMap();
            m.put(1, "www");
            m.put(2, "rrr");
            m.put(3, "ttt");
            m.put(4, "uuu");
            System.out.println(m.keySet());*/
            List list2=new ArrayList();
            for(int i=0;i<10;i++){
                list2.add(i);
            }
            System.out.println(list2);
            Collections.sort(list2);
            System.out.println(list2);
            int a=Collections.binarySearch(list2, 5);
            System.out.println(a);
            //Collections.copy(list2, list);
            System.out.println(list2);
        }
    
    }

    接口在输出调用时需要重写equals方法,ToString方法,hashcode方法


    自动打包/解包(自动拆箱/装箱)
    自动将基础类型转换为对象(装箱)
    自动将对想转换为基础数据类型(拆箱)

    Comparable接口, Collections类
    Collections的常用算法:
    sort(List); 排序
    如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法
    shuffle(List); 随机排列
    void reverse(List); 逆序排列(Linked效率较高)
    copy(); 复制集合, 前提是size()相同(长度, 和容量的区别)
    fill(List, Object);使用某个对象填充整个List
    binarySearch();二分搜索法

    泛型(Generic)(1.5之后才有泛型)
    1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
    2, 集合中秋出来的时候需要转型, 效率低, 易出错

    好处: 增强程序的可读性和稳定性

    总结:
    集合是数组的一种延伸, 与数组相比有很多好处和优点,
    1, 可以存放不同的类型
    2, 长度可变
    3, 随时存放和获取

    六个接口和一个类:
    List
    Map
    Set
    Iterator
    Collection
    Comparable

    Collections类

    选择一种集合类型是一件非常痛苦的事
    在以后的编程中要考虑读取和修改的效率问题, 数据的存取在以后的使用过程中, Collection是主要的载体,
    Array: 读快改慢
    Linked: 读慢改快
    Hash: 介于两者之间的

  • 相关阅读:
    【css】rem及其替换方案
    【css】如何实现环形进度条
    【js】我们需要无限滚动列表吗?
    【js】再谈移动端的模态框实现
    【js】callback时代的变更
    【js】为什么要使用react+redux
    【js】JavaScript parser实现浅析
    【css】回想下经典的布局
    【JS】温故知新: 从parseInt开始
    【渲染原理】浏览器渲染原理的个人整理
  • 原文地址:https://www.cnblogs.com/NCL--/p/7260840.html
Copyright © 2020-2023  润新知