集合练习(1)

文章展示了如何使用Java编程处理新闻类对象,包括创建带参数的构造器,封装新闻类并重写toString方法以仅显示标题。文章还涉及ArrayList集合的倒序遍历,处理超过一定长度的标题,以及HashMap中对象的操作,如更改键值、批量加薪和遍历工资等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第一题

思路分析:

第二题

第三题

思路分析:


第一题

代码演示:

思路分析:

1.因为我们在打印的时候,是需要打印一个标题的信息即可,所以在使用构造器初始化的时候,只需要写一个带参数的构造器即可

2.在进行倒叙遍历的时候,因为集合的下标是从0开始的,所以在i=arrayList,size()需要减一,否则会下标越界

3.对于新闻字体的表示超过15个字的来说,就是对字符串一些方法的运用,并且需要用到向下转型,因为需要使用子类的属性和方法

4.对于对标题的处理,我们编写一个方法,一进入该方法,先判断要处理的字符串是否为空,如果为空直接返回一个空,然后就是对字符串的处理了,这里我使用的subString方法,字符串截取,该方法有两个参数,第一个参数填的是,从那个位置开始截取,第二个参数表示,截取到那一个位置

package idea.chapter14.homework;

import java.util.ArrayList;

/*
(1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;
(2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象:
新闻一:新冠确诊病例超千万,数百万印度教信徒赴恒河“圣浴”引民众担忧
新闻二:男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生
(3)将新闻对象添加到ArrayList集合中,并且进行倒序遍历;
(4)在遍历集合过程中,对新闻标题进行处理,超过15字只保留前15个,然后在后边加”...”
(5)在控制台打印遍历出经过处理的新闻标题;
 */
@SuppressWarnings({"all"})
public class Homework01 {
    public static void main(String[] args) {
        //创建了一个ArrayList集合
        ArrayList arrayList = new ArrayList();
        //添加两个元素
        arrayList.add(new Journalism("新闻一:新冠确诊病例超千万,数百万印度教信徒赴恒河“圣浴”引民众担忧"));
        arrayList.add(new Journalism("新闻二:男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生"));

        //倒序遍历
        for (int i = arrayList.size() - 1; i >= 0; i--) {
            //向下转型,因为要使用子类的属性和方法
            Journalism m = (Journalism) arrayList.get(i);
            System.out.println(handle(m.getLabel()));
        }
    }

    //该方法用于处理字符串,如果该字符串的长度超过了一定范围,就按照指定的方式进行处理
    public static String handle(String label) {
        //判断标签是否为null 如果为null返回空
        if (label == null) {
            return "";
        }

        //标题不为null时
        if (label.length() > 15) {
            //如果标题的长度大于15,就按照要求进行处理
            //用到String类的substring()方法,截取指定范围的子串
            return label.substring(0, 15) + "...";
        } else {
            //如果标题的长度小于15,就直接返回标题
            return label;
        }

    }
}

class Journalism {
    //标签
    private String label;
    //内容
    private String content;

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

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "Journalism{" +
                "label='" + label + '\'' +
                '}';
    }
}

第二题

代码演示:

思路分析:
isEmpty:判断是否为空 该方法会返回一个布尔值,如果为空返回的就是true反之就是false

 * 使用ArrayList 完成对 对象 Car {name, price} 的各种操作
 * 1.add:添加单个元素
 * 2.remove:删除指定元素
 * 3.contains:查找元素是否存在
 * 4.size:获取元素个数
 * 5.isEmpty:判断是否为空
 * 6.clear:清空
 * 7.addAll:添加多个元素
 * 8.containsAll:查找多个元素是否都存在
 * 9.removeAll:删除多个元素
 * 使用增强for和 迭代器来遍历所有的car , 需要重写 Car 的toString方法

package idea.chapter14.homework;

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

/*

 */
@SuppressWarnings({"all"})
public class Homework02 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        Car car = new Car("宝马", 400000);
        Car car2 = new Car("宾利", 5000000);

//        * 1.add:添加单个元素
        arrayList.add(car);
        arrayList.add(car2);

//        * 2.remove:删除指定元素
        arrayList.remove(car);

//        * 3.contains:查找元素是否存在
        //因为我们在上面已经删除了car对象,所以这里返回的就是false
        System.out.println(arrayList.contains(car));

//        * 4.size:获取元素个数
        System.out.println(arrayList.size());

//        * 5.isEmpty:判断是否为空
        System.out.println(arrayList.isEmpty());

//        * 6.clear:清空
        //arrayList.clear();

//        7.addAll:添加多个元素
        ArrayList arrayList1 = new ArrayList();
        arrayList1.add(new Car("大众", 1234));
        arrayList1.add(new Car("奥迪", 12345));
        arrayList.addAll(arrayList1);
        System.out.println(arrayList);

        //8.containsAll:查找多个元素是否都存在
        System.out.println(arrayList.containsAll(arrayList1));

        //9.removeAll:删除多个元素
        System.out.println(arrayList.removeAll(arrayList1));//删除成功返回true

//        * 使用增强for和 迭代器来遍历所有的car , 需要重写 Car 的toString方法

        //使用增强for循环
        for (Object o : arrayList) {
            System.out.println(o);
        }

        //使用迭代器
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next);
        }


    }
}

class Car {
    private String name;
    private double price;

    public Car(String name, double price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

第三题

代码演示:

思路分析:

1.为Jack的工资修改为2600的本质就是,覆盖原来的值,因为hashMap不能添加重复的元素,如何 添加重复的元素,会加入不进去,但是会覆盖之前的内容,所以在加入一个key为jack value为2600的即可

2.为所有员工的工资增加100先得到所有的key然后根据得到的key 使用hashMap 的get方法得到value,然后在为他们都加上100 然后需要强转类型,转成Integer

3.遍历集合中所有的工资,也就是不用key,那么有两个方法,第一种是得到所有的key,然后在根据得到的key通过hashMap的get方法得到value 或者就是因为HashMap实现了Entry接口 ,在Entry接口中,提供了getKey() 和 getValue();使用这种方法也是可以的

package idea.chapter14.homework;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/*
3.编程题Homework03.java
按要求完成下列任务
1)使用HashMap类实例化一个Map类型的对象m,键(String)和值(int)分别用于存储员工的姓名和工资,存入数据如下: jack—650元;tom—1200元;smith—2900元;
2)将jack的工资更改为2600元
3)为所有员工工资加薪100元;
分匀遍历集合中所有的员工
遍历集合中所有的工资
 */
@SuppressWarnings({"all"})
public class Homework03 {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        hashMap.put("jack", 650);//虽然我们value传入的是int但是底层会自动装箱转成Integer
        hashMap.put("tom", 1200);
        hashMap.put("simth", 2900);

        //2)将jack的工资更改为2600元
        //该要求其实就是覆盖,在添加一个键值为key为Jack的就可以了
        hashMap.put("jack", 2600);
        Set KeySet = hashMap.keySet();
        for (Object key : KeySet) {
            //keySet里面存放的就是我们的键,提供键值找到value在加100即可实现  但是要将类型转换,因为类型是Object所以需要向下转型,转成Integer
            hashMap.put(key, (Integer) hashMap.get(key) + 100);
        }

        System.out.println(hashMap);


        //分匀遍历集合中所有的员工
        Iterator iterator = KeySet.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next);
        }


        //遍历集合中所有的工资.相当于只遍历工资,也就是只要value
        System.out.println("之遍历工资");
        for (Object o : KeySet) {
            //此时o就是我们key
            System.out.println(hashMap.get(o));
        }

        /*
        思路分析:
        1.为Jack的工资修改为2600的本质就是,覆盖原来的值,因为hashMap不能添加重复的元素,如何 添加重复的元素,会加入不进去,但是会覆盖之前的内容,所以在加入一个key为jack value为2600的即可
        2.为所有员工的工资增加100先得到所有的key然后根据得到的key 使用hashMap 的get方法得到value,然后在为他们都加上100 然后需要强转类型,转成Integer
        3.遍历集合中所有的工资,也就是不用key,那么有两个方法,第一种是得到所有的key,然后在根据得到的key通过hashMap的get方法得到value 或者就是因为HashMap实现了Entry接口 ,
        在Entry接口中,提供了getKey() 和 getValue();使用这种方法也是可以的
         */
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值