• 集合框架


    集合框架包含的内容:

    集合框架的接口:

    List接口实现类

    ArrayList

     1 package com.jredu.ch01;
     3 import java.util.ArrayList;
     5 import java.util.List;
     7 public class ArrayListTest {
     9     public static void main(String[] args) {
    10         // TODO Auto-generated method stub
    11         // 创建一个list集合对象
    12         // list是有序但不唯一的一组集合数据
    13         List list = new ArrayList<>();
    14         // 开始的集合长度为0
    15         // list.size() 返回给定集合的长度
    16         System.out.println("添加数据前的集合长度" + list.size());
    17         // list.add("aaaa");
    18         // list.add("dddd");
    19         // list.add("cccc");
    20         // list.add("aaaa");
    21         list.add(1);
    22         list.add("two");
    23         list.add('c'); // 字符型
    24         list.add(true);
    25         // list.add(index, element);
    26         // 在指定索引处添加了一个元素,但索引位置必须介于0——集合的元素个数之间
    27         list.add(1, "啦啦啦");
    28         System.out.println(list);
    29         System.out.println("添加数据后的集合长度" + list.size());
    30         // get方法通过传入指定元素的索引获取该元素,取出来的类型Object类型
    31         // 使用前需要进行类型强制转换
    32         // 索引范围内是0——集合长度减一 范围
    33         System.out.println(list.get(3));// 因为add添加,要+1得到c
    34     }
    35 }
     1 package com.jredu.ch01;
     3 import java.util.ArrayList;
     5 public class ArrayListTest2 {
     7     public static void main(String[] args) {
     8         // TODO Auto-generated method stub
     9         ArrayList list = new ArrayList<>();
    10         list.add(1);
    11         list.add(2);
    12         list.add(3);
    13         list.add(2);
    14         // contains判断列表中是否存在该元素
    15         if (list.contains(3)) {
    16             System.out.println("找到了");
    17         } else {
    18             System.out.println("未找到");
    19         }
    20         // remove在列表中删除指定元素,删除成功返回true,失败返回false
    21         // 如果有多个元素值相同,只删掉第一个
    22         if (list.remove(Integer.valueOf(2))) { // 包装类
    23             System.out.println("删除成功");
    24         } else {
    25             System.out.println("删除失败");
    26         }
    27         System.out.println(list);
    28         // 删除的是对应下标的那个元素的值
    29         // list.remove(1);
    30         System.out.println(list.remove(2));
    32     }
    34 }
     1 package com.jredu.ch03;
     3 import java.util.ArrayList;
     4 import java.util.Arrays;
     6 /**
     7  * list扩展:常见的几个扩展方法11  */
    12 public class ListDemo {
    13     public static void main(String[] args) {
    14         ArrayList list = new ArrayList<>();
    15         ArrayList list2 = new ArrayList<>();
    16         ArrayList list3 = new ArrayList<>();
    17         list.add(1);
    18         list.add(2);
    19         list.add(3);
    20         list2.add(1);
    21         list2.add(2);
    22         list2.add(3);
    23         // 向集合中添加一个集合
    24         list3.addAll(list);
    25         list3.addAll(list2);
    26         // System.out.println(list);
    27         // System.out.println(list2);
    28         // System.out.println(list3);
    30         ArrayList list4 = new ArrayList<>();// ArrayList list4 =null;
    31         list4.add(1);
    32         // 判断集合中是否有元素
    33         if (list4 != null && !list4.isEmpty()) {
    34             System.out.println("集合中有数据");
    35         } else {
    36             System.out.println("集合为空");
    37         }
    39         ArrayList list5 = new ArrayList<>();
    40         // Object [] o={1,2,3};
    41         list5.add(1);
    42         list5.add(2);
    43         list5.add(3);
    44         // 数组和集合相互转换
    45         // 集合转数组
    46         Object[] o = list5.toArray();
    47         System.out.println(Arrays.toString(o));
    48         // 数组转集合
    49         ArrayList list6 = new ArrayList<>();
    50         list6.addAll(Arrays.asList(o));
    51         System.out.println(list6);
    53         // for(int i=0;i<list.size();i++){
    54         // list2.add(list.get(i));
    55         // }
    56         // System.out.println(list2);
    57     }
    58 }

    LinkedList

     1 package com.jredu.ch01;
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Random;
     6 import java.util.Scanner;
     8 public class Random1 {
    10     //存储所有的姓名
    11     List list=new ArrayList<>();
    12     //接收控制台信息
    13     Scanner in=new Scanner(System.in);
    14     //随机数
    15     Random r=new Random();
    17     public void addNames() {
    18         //循环添加姓名
    19         while(true) {
    20             //提示信息
    21             System.out.print("请输入姓名");
    22             //接收姓名
    23             list.add(in.next());
    24             //提示信息
    25             System.out.print("是否继续添加?(y/n)");
    26             String code=in.next();
    27             if(!code.equals("y")) {
    28                 break;
    29             }
    30         }
    31         System.out.println(list);
    32     }   
    34     public void getRandomName() {
    35         while(true){
    36             //得到随机数
    37             int i=r.nextInt(list.size());
    38             //得到对应的名字
    39             System.out.println(list.get(i));
    40             System.out.print("是否继续点名?(y/n)");
    41             String code=in.next();
    42             //判断如果不是y,就退出
    43             if(!code.equals("y")) {
    44                 return;
    45             }
    46         }
    47     }
    49     public static void main(String[] args) {
    50         Random1 test=new Random1();
    51         //添加姓名
    52         test.addNames();
    53         //获得随机的姓名
    54         test.getRandomName();
    55     } 
    58 }
     1 package com.jredu.ch02;
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 import java.util.Scanner;
     7 public class StudentManager {
     9     ArrayList list = new ArrayList<>();
    10     Scanner sc = new Scanner(System.in);
    12     public void addStu() {
    13         System.out.println("**********录入学生信息,当录入学生的编号为0时结束录入************");
    14         while (true) {
    15             System.out.print("请输入学员学号:");
    16             int num = sc.nextInt();
    17             Student stu = null; 
    18             if (num == 0) {
    19                 System.out.println("结束录入!");
    20                 show();
    21                 break;
    22             } else {
    23                 System.out.print("请输入学员姓名:");
    24                 String name = sc.next();
    25                 System.out.print("请输入学员年龄:");
    26                 int age = sc.nextInt();
    27                 stu = new Student(num, name, age);
    28                 list.add(stu);
    29             }
    30         }
    32     }
    34     public void show() {
    35         System.out.println("学员的信息如下:");
    36         System.out.println("学号\t姓名\t年龄");
    37         // Student s = null;
    38         // for (int i = 0; i < list.size(); i++) {
    39         // s = (Student) list.get(i);
    40         // System.out.println(s.getId() + "\t" + s.getName() + "\t" +
    41         // s.getAge());
    42         // }
    43         for (Object o : list) {
    44             Student stu = (Student) o;
    45             System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge());
    46         }
    48     }
    50     public void update() {
    51         System.out.print("请输入需要修改的学员学号:");
    52         int num = sc.nextInt();
    53         for (int i = 0; i < list.size(); i++) {
    54             Student stu = (Student) list.get(i);
    55             if (stu.getId() == num) {
    56                 System.out.print("请输入需要修改的学员姓名:");
    57                 stu.setName(sc.next());
    58                 System.out.print("请输入需要修改的学员年龄:");
    59                 stu.setAge(sc.nextInt());
    60                 System.out.println("修改成功");
    61                 // 展示数据
    62                 show();
    63                 return;// 跳出方法
    64             }
    65         }
    66         System.out.println("没有该学员");
    67     }
    69     public void remove() {
    70         System.out.print("请输入要删除的编号");
    71         int no = sc.nextInt();
    72         for (int i = 0; i < list.size(); i++) {
    73             if (no == ((Student) list.get(i)).getId()) {
    74                 list.remove(i);
    75                 System.out.println("删除成功");
    76                 show();
    77                 return;
    78             }
    79         }
    80         System.out.println("对不起,没有此学员");
    81     }
    83     public static void main(String[] args) {
    84         StudentManager sm = new StudentManager();
    85         sm.addStu();
    86         sm.update();
    87         sm.remove();
    88     }
    90 }

    迭代器Iterator

    如何遍历List集合?

    1、通过for循环和get()方法配合实现遍历

    2、通过迭代器Iterator实现遍历

    所有集合接口和类都没有提供相应遍历的方法,而是由Iterator实现集合遍历

    Collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历

    boolean hasNext():判断是否存在另一个可访问的元素

    Object next()返回要访问的下一个元素

     1 package com.jredu.ch03;
     3 import java.util.Iterator;
     4 import java.util.LinkedList;
     6 public class IteratorTest {
     7     public static void main(String[] args) {
     8         LinkedList list=new LinkedList<>();
     9         list.add(1);
    10         list.add(2);
    11         list.add(3);
    12         //获取集合中的每一个元素
    13         //使用迭代
    14         Iterator iter=list.iterator();
    15         //判断是否存在下一个元素
    16         while(iter.hasNext()){
    17             //获取下一个元素
    18             System.out.print(iter.next()+" ");        
    19         }
    20         System.out.println("\n***********");    
    21         //for循环
    22         for(int i=0;i<list.size();i++){
    23             System.out.print(list.get(i)+" ");
    24         }
    25         System.out.println("\n***********");
    26         //foreach循环
    27         for(Object o:list){
    28             System.out.print(o+" ");
    29         }
    30 //        for(int i=0;i<5;i++){
    31 //            list.add(new Student(i,"name"+i,i));
    32 //        }
    33 //        Iterator iter=list.iterator();
    34 //        while(iter.hasNext()){
    35 //            Student stu=(Student)iter.next();
    36 //            System.out.println(stu.getId());
    37 //            System.out.println(stu.getName());
    38 //            System.out.println(stu.getAge());            
    39 //        }    
    40     }
    41 }

    HashSet

     1 package com.jredu.ch03;
     2 import java.util.HashSet;
     3 import java.util.Iterator;
     4 public class SetTest {
     5     public static void main(String[] args) {
     6         HashSet hs=new HashSet<>();
     7         //唯一
     8 //        hs.add(1);
     9 //        hs.add(2);
    10 //        hs.add(1);
    11 //        hs.add(true);
    12 //        hs.add(true);
    13 //        Dog dog=new Dog("陈", "单身猫");
    14 //        Dog dog2=new Dog("周", "单身猫");
    15 //        hs.add(dog2);
    16 //        hs.add(dog);
    17 //        System.out.println(hs.size());
    18         //无序
    19         hs.add(8);
    20         hs.add(5);
    21         hs.add(3);
    22         hs.add(1);
    23         Iterator iter=hs.iterator();
    24         while(iter.hasNext()){
    25             int i=(int)iter.next();
    26             System.out.println(i);
    27         } 
    29     }
    30 }

    HashMap

     1 package com.jredu.ch04;
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Iterator;
     6 import java.util.Set;
     7 import java.util.Map.Entry;
     9 public class Ch01 {
    11     public static void main(String[] args) {
    12         HashMap map = new HashMap<>();
    13         map.put(1, "哈哈");
    14         map.put(2, "吼吼");
    15         map.put(3, "呜呜");
    16         // keySet获得键集合
    17         Set set = map.keySet();
    18         Iterator iter = set.iterator();
    19         while (iter.hasNext()) {
    20             int i = (int) iter.next();
    21             System.out.println(i);
    22         }
    23         // values获得值集合
    24         Collection col = map.values();
    25         Iterator iter1 = col.iterator();
    26         while (iter1.hasNext()) {
    27             String str = (String) iter1.next();
    28             System.out.println(str);
    29         }
    30         // entrySet获得键和值的集合
    31         Set entrySet = map.entrySet();
    32         Iterator iter2 = entrySet.iterator();
    33         while (iter2.hasNext()) {
    34             Entry entry = (Entry) iter2.next();
    36             System.out.println(entry.getKey());
    37             System.out.println(entry.getValue());
    38         }
    39     }
    41 }

     

    package com.jredu.ch04;
    public class Goods {  
        private String name;
        private double price;
        private int count;  
        public Goods(String name, double price, int count) {
            super();
            this.name = name;
            this.price = price;
            this.count = count;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        public int getCount() {
            return count;
        }
        public void setCount(int count) {
            this.count = count;
        }
        @Override
        public String toString() {
            return "Goods [name=" + name + ", price=" + price + ", count=" + count + "]";
        }
    }
    
    package com.jredu.ch04;
    import java.util.Comparator;
    /**
     * 数量比较*/
    public class CountComparator implements Comparator{
        @Override
        public int compare(Object o1, Object o2) {
            // TODO Auto-generated method stub
            Goods g1=(Goods) o1;
            Goods g2=(Goods) o2;
            //按照数量规则进行比较判断
            if(g1.getCount()>=g2.getCount()) {
                //满足规则返回1
                return 1;
            }
            return -1;
        }
    }
    
    package com.jredu.ch04;
    import java.util.ArrayList;
    import java.util.Collections;
    public class GoodsManager {
        ArrayList list=new ArrayList<>();
        public static final int PRICE=1;
        public static final int COUNT=2;
        public GoodsManager() {
            list.add(new Goods("手机", 999, 2));
            list.add(new Goods("电视", 4000, 5));
            list.add(new Goods("笔记本电脑", 6000, 10));
            list.add(new Goods("鼠标", 50, 30));
            list.add(new Goods("键盘", 40, 7));
        }    
        public void sort(int type) {
            //价格排序/数量排序
            switch (type) {
            case PRICE:
                Collections.sort(list,new PriceComparator());
    //            Collections.reverse(list);
                show();
                break;
            case COUNT:
    //            Collections.sort(list,new CountComparator());
    //            Collections.reverse(list);
                show();
                break;
            }
        }    
        public void show() {
            System.out.println(list);
        }
        public static void main(String[] args) {
            GoodsManager gm=new GoodsManager();
            gm.sort(GoodsManager.PRICE);
    //        gm.sort(GoodsManager.COUNT);
        }
    }
  • 相关阅读:
    A1023 Have Fun with Numbers [大整数乘法]
    大整数的四则运算
    A1096 Consecutive Factors [因子分解]
    A1078 Hashing [质数和散列结合]
    A1015 Reversible Primes [质数问题]
    又谈进制转换
    A1088 Rational Arithmetic [分数四则运算]
    A1081 Rational Sum [分数计算]
    linux主流系统配置静态ip
    主机ping虚拟机请求超时,虚拟机ping主机正常ping通导致ssh连接问题
  • 原文地址:https://www.cnblogs.com/a5513633/p/6719357.html
Copyright © 2020-2023  润新知