集合基础,练习练习

1.定义一个Collection接口类型的变量,引用一个List集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作。

public class Work7_1_1 {
    public static void main(String[] args) {

        //定义一个Collection接口类型的变量,引用一个List集合的实现类
        Collection collection = new ArrayList();

        //实现添加单个元素
        collection.add("Rose");
        collection.add(12.5);
        collection.add(44);

        //添加另一个集合
        Collection collection1 = new ArrayList();
        collection1.add(99);
        collection1.add("Java");
        collection1.add(12.7);

        //删除元素
        collection1.remove(99);
        System.out.println(collection1);

        //判断集合中是否包含一个元素
        System.out.println(collection1.contains("Java"));

        //判断是否为空
        System.out.println(collection1.isEmpty());

        //清除集合
        collection1.clear();

        //返回集合里元素的个数
        System.out.println(collection1.size());
    }
}

1).创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;

2).通过至少三种方法遍历上题中的集合

public class Work7_1_2 {
    public static void main(String[] args) {

        //创建ArrayList实例化对象
        List list = new ArrayList();

        //添加10个以上的元素
        list.add(1);
        list.add("三");
        list.add(4);
        list.add("五");
        list.add(6);
        list.add("七");
        list.add(8);
        list.add("久");
        list.add(10);
        list.add(11);
        list.add(12);
        list.add("end");

        //在2号位插入一个元素
        list.add(1,"我是插入");

        //获得5号位元素
        System.out.println("5号位元素:"+list.get(4));

        //删除6号位元素
        list.remove(5);

        //修改7号位的元素
        list.set(6,"我被修改");

        //通过至少三种方法遍历上题中的集合
        //方式一 迭代器遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next() + " ");
        }
        System.out.println("\n----------------------");
        //方式一 普通for循环
        for (int i = 0;i < list.size();i++){
            System.out.print(list.get(i) + " ");
        }
        System.out.println("\n----------------------");
        //方式三 增强for循环
        for (Object o : list){
            System.out.print(o + " ");
        }
    }
}

输出结果:

5号位元素:五

1 我是插入 三 4 五 七 我被修改 久 10 11 12 end

1 我是插入 三 4 五 七 我被修改 久 10 11 12 end

1 我是插入 三 4 五 七 我被修改 久 10 11 12 end

3.按要求实现下列问题:
1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;(10分)

2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象:
新闻一:中国多地遭雾霾笼罩空气质量再成热议话题
新闻二:春节临近北京“卖房热”

3)将新闻对象添加到ArrayList集合中,并且使用ListIterator倒序遍历;

4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前14个,然后在后边加“…”

5)在控制台打印遍历出经过处理的新闻标题;

public class Journalism {

    //1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;(10分)
    //
    //2)只提供一个带参数的构造器,实例化对象时,只初始化标题;
    /**
     * 新闻标题
     */
    private String title;

    /**
     * 新闻内容
     */
    private String details;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDetails() {
        return details;
    }

    public void setDetails(String details) {
        this.details = details;
    }

    public Journalism(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "新闻标题:" + title + '\n'+
                "内容:" + details  ;
    }
}
public class Work7_1_3 {
    public static void main(String[] args) {
        //2)实例化两个对象:
        //新闻一:中国多地遭雾霾笼罩空气质量再成热议话题
        //新闻二:春节临近北京“卖房热”

        Journalism journalism1 = new Journalism("中国多地遭雾霾笼罩空气质量再成热议话题");
        Journalism journalism2 = new Journalism("春节临近北京“卖房热”");

        //3)将新闻对象添加到ArrayList集合中,并且使用ListIterator倒序遍历;
        List<Journalism> list = new ArrayList<>();
        list.add(journalism1);
        list.add(journalism2);
        Reverse(list);
    }

    public static void Reverse(List<Journalism> list){
        //创建列表迭代器
        ListIterator<Journalism> listIterator = list.listIterator();

        //将指针从默认的左边移到右边
        while (listIterator.hasNext()){
            listIterator.next();
        }

        //实现倒序
        while (listIterator.hasPrevious()){
            Journalism journalism = listIterator.previous();
            //4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前14个,然后在后边加“…”
            if (journalism.getTitle().length() > 15){
                //substring() 截取索引为0到14的字符串
                journalism.setTitle(journalism.getTitle().substring(0, 14) + "...");
            }else{
                journalism.setTitle(journalism.getTitle());
            }
            System.out.println(journalism);
        }

    }
}

输出结果:

新闻标题:春节临近北京“卖房热”
内容:null
新闻标题:中国多地遭雾霾笼罩空气质量再…
内容:null

4.创建一个List集合的对象,添加几个数字,反转对象中元素的顺序;

创建一个List集合的对象,添加几个字符串,反转对象中元素的顺序;

public class Work7_1_4 {
    public static void main(String[] args) {
        //创建一个List集合的对象
        List list = new ArrayList<>();

        //添加几个数字
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        //反转对象中元素的顺序
        reverse(list);

        //创建一个List集合的对象,添加几个字符串,反转对象中元素的顺序;
        List list1 = new ArrayList();
        list1.add("one");
        list1.add("two");
        list1.add("three");
        list1.add("four");
        list1.add("five");
        list1.add("six");
        list1.add("seven");
        reverse(list1);


    }

    public static void reverse(List list){
        //反转对象中元素的顺序
        int total = list.size();
        for (int i =0;i <= list.size()/2;i++){
            Object o = list.get(i);
            total--;
            list.set(i,list.get(total));
            list.set(total,o);
        }
        System.out.println(list);
    }
}

输出结果:

[7, 6, 5, 4, 3, 2, 1]
[seven, six, five, four, three, two, one]

5.创建一个List集合的对象,添加几条int数据,将1号位和2号位交换;获取最大值,最小值;求得平均值

public class Work7_1_5 {
    public static void main(String[] args) {
        //创建一个List集合的对象
        List list = new ArrayList();

        //添加几条int数据
        list.add(5);
        list.add(11);
        list.add(20);
        list.add(1);
        list.add(8);

        //将1号位和2号位交换
        Object o = list.get(0);
        list.set(0, list.get(1));
        list.set(1, o);
        //System.out.println(list);

        //获取最大值,最小值
        Object maxNum = Collections.max(list);
        Object minNum = Collections.min(list);
        System.out.println("最大值:"+maxNum+"   最大值索引为:"+list.indexOf(maxNum));
        System.out.println("最小值:"+minNum+"   最小值索引为:"+list.indexOf(minNum));

        //求得平均值
        int sun = 0;
        for (Object o1 : list){
            sun += (int)o1;
        }
        System.out.println("平均值:"+sun/list.size());

/*      //此方法为使用DoubleSummaryStatistics方法:统计数据的收集状态,如count,min,max,sum和average
        List<Integer> lists = list;
        //此处我暂时还没搞明白  所以先不使用
        DoubleSummaryStatistics statistics = lists.stream().mapToDouble(Number::doubleValue).summaryStatistics();

        System.out.println("最大值:" + statistics.getMax());
        System.out.println("最小值:" + statistics.getMin());
        System.out.println("平均值:" + statistics.getAverage());
        System.out.println("平均值四舍五入:" + Math.round(statistics.getAverage()));
        System.out.println("求和:" + statistics.getSum());
        System.out.println("计数:" + statistics.getCount());*/


    }
}

输出结果:

最大值:20 最大值索引为:2
最小值:1 最小值索引为:3
平均值:9

6.已知有一个Worker 类如下:
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。
6) 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true

public class Worker {
    /**
     * 员工姓名
     */
    private String name;
    /**
     * 员工年龄
     */
    private int age;
    /**
     * 员工工资
     */
    private int salary;

    public Worker() {
    }

    public Worker(String name, int age, int salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return " name=" + name +
                " age=" + age +
                " salary=" + salary ;
    }

    //6) 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Worker)) return false;
        Worker worker = (Worker) o;
        return age == worker.age &&
                salary == worker.salary &&
                Objects.equals(name, worker.name);
    }

}
package com.itheima05;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Work7_1_6 {
    public static void main(String[] args) {
        // 1)创建一个List
        List<Worker> list = new ArrayList<Worker>();

        //在List 中增加三个工人
        Worker worker1 = new Worker("zhang3",18,3000);
        Worker worker2 = new Worker("li4",25,3500);
        Worker worker3 = new Worker("wang5",22,3200);
        list.add(worker1);
        list.add(worker2);
        list.add(worker3);

        //2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
        Worker worker4 = new Worker("zhao6",24,3300);
        list.add(1,worker4);

        //3) 删除wang5 的信息
        list.remove(worker3);

        //4)利用for 循环遍历,打印List 中所有工人的信息
        for (Worker worker : list){
            System.out.println(worker);
        }

        System.out.println("---------------------------");
        //5)利用迭代遍历,对List 中所有的工人调用work 方法
        Iterator<Worker> iterator = list.iterator();
        while (iterator.hasNext()){
            Worker worker = iterator.next();
            System.out.print(worker + " ");
            Work();
        }

        //测试6)
        Worker worker5 = new Worker("wang5",22,3200);
        Worker worker6 = new Worker("wang5",10,3200);
        if (worker3.equals(worker6)){
            System.out.println(true);
        }
        if (worker3.equals(worker3)){
            System.out.println("*");
        }


    }
    public static void Work(){
        System.out.println("工作中...");
    }
}

测试结果:
name=zhang3 age=18 salary=3000
name=zhao6 age=24 salary=3300

name=li4 age=25 salary=3500

name=zhang3 age=18 salary=3000 工作中…
name=zhao6 age=24 salary=3300 工作中…
name=li4 age=25 salary=3500 工作中…
*

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值