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 工作中…
*