list集合练习

博客包含多个Java集合编程练习,如创建ArrayList、LinkedList集合,进行元素添加、获取、插入、删除、修改等操作;模拟队列;处理随机数存入集合及排序;对工人信息进行管理;对奥运足球队分组;计算学生平均年龄和班级平均分;实现List倒序排列等。

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

练习1.
    1)创建一个ArrayList集合对象,并为这个集合添加元素(元素是Student)
    2)采用前面介绍的两种方式获取 M合中的对象
    class Student{
        String name; 
        int age;
        double score;
    }

package pro_0416_homework;
/**
 * 练习1.
	1)创建一个ArrayList集合对象,并为这个集合添加元素(元素是Student)
	2)采用前面介绍的两种方式获取 M合中的对象
	class Student{
		String name; 
		int age;
		double score;
	}
 */
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class HomeWork01
{
	public static void main(String[] args) 
	{
		List<Student> list=new ArrayList<>();
		list.add(new Student("张三",18,66));
		list.add(new Student("李四",19,80));
		System.out.println(list.toString());
		//遍历方法一
		for(int i=0;i<list.size();i++)
		{
			System.out.print(list.get(i)+"\t");
		}
		System.out.println();
		//遍历方法二Iterator迭代器
		Iterator<Student> it=list.iterator();
		while(it.hasNext())
		{
			System.out.print(it.next()+"\t");
		}
	}
}
class Student
{
	String name;
	int age;
	double score;
	
	public Student(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}

	@Override
	public String toString() {
		return "Student[name=" + name + ", age=" + age + ", score=" + score + "]";
	}
}

练习2
    1)使用LinkedList来模拟一个队列(先进先出的特性) .拥有:
        -放入对象的方法void put(Object o)
        -取出对象的方法Object get()
        -判断队列当中是否为空的方法boolean isEmpty ()
        并且,编写测试代码,验证你的队列是否正确。

package pro_0416_homework;

import java.util.LinkedList;
import java.util.List;

/**
 * 练习2
	1)使用LinkedList来模拟一个队列(先进先出的特性) .拥有:
	    -放入对象的方法void put(Object o)
        -取出对象的方法Object get()
	    -判断队列当中是否为空的方法boolean isEmpty ()
	    并且,编写测试代码,验证你的队列是否正确。
 */
public class HomeWork02 
{
	public static void main(String[] args) 
	{
		Duilie d=new Duilie();
		System.out.println(d.isEmpty());
		d.put("a");
		d.put("b");
		System.out.println(d.toString());
		/*System.out.println(d.get());
		System.out.println(d.get());*/
		while(!d.isEmpty())
		{
			System.out.println(d.get());
		}
	}
}
class Duilie
{
	private LinkedList<Object> list;
	
	public Duilie()
	{
		list =new LinkedList<>();
	}
	public void put(Object o)
	{
		
		list.addLast(o);
	}
	public Object get()
	{
		return list.remove();
	}
	public boolean isEmpty()
	{
		if(list.isEmpty())
		{
			return true;
		}else {
			return false;
		}
	}
	@Override
	public String toString() {
		return "Duilie [list=" + list + "]";
	}	
}

练习1:
    1、生成10个随机数,值在100到200之间;
    2、将这十个数存入HashSet集合中(有可能集合的长度小于10)。
    3、将这个HashSet集合转换成ArrayList集合
    4、重新为ArrayList集合排序,按照从小到大的顺序;
    5、遍历该集合;

package pro_0416_homework;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
 * 练习1:
	1、生成10个随机数,值在100到200之间;
	2、将这十个数存入HashSet集合中(有可能集合的长度小于10)。
	3、将这个HashSet集合转换成ArrayList集合
	4、重新为ArrayList集合排序,按照从小到大的顺序;
	5、遍历该集合;
 */
public class HomeWork03 
{
	public static void main(String[] args) 
	{
		Set<Integer> set=new HashSet<>(10);
		for(int i=0; i<10;i++)
		{
			set.add((int)((Math.random())*101+100));//将这十个数存入HashSet集合中
		}
		System.out.println(set.toString());
		
		ArrayList<Integer> arrlist=new ArrayList<>(set);//HashSet集合转换成ArrayList集合
		System.out.println(arrlist.toString());
		
		Collections.sort(arrlist);//按照从小到大的顺序
		System.out.println(arrlist.toString());
		
		//遍历
		for(int i=0;i<arrlist.size();i++)
		{
			System.out.print(arrlist.get(i)+"\t");
		}
	}
}

练习2:
     创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;
     并用两种方法遍历该集合

package pro_0416_homework;

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

/**
 * 练习2:
	 创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;
	 并用两种方法遍历该集合
 */
public class HomeWork04 
{
	public static void main(String[] args) 
	{
		List<Object> list=new ArrayList<>();
		
		String letter="abcdefghijkl中国opqrstuvwx飞z0123456789";
		for(int i=0;i<12;i++)
		{
			list.add(letter.charAt((int)(Math.random()*letter.length())));
		}
		System.out.println(list.toString());
		
		list.add(1, "2号位");
		System.out.println(list.toString());
		
		System.out.println("5号位元素:"+list.get(4));
		
		System.out.println("删除的6号位元素是:"+list.remove(5));
		System.out.println(list.toString());
		
		list.set(6, "修改7号位");
		System.out.println(list.toString());
		
		//遍历方式一
		for(int i=0;i<list.size();i++)
		{
			System.out.print(list.get(i)+"\t");
		}
		System.out.println();
		//遍历方式二
		Iterator<Object> it=list.iterator();
		while(it.hasNext())
		{
			System.out.print(it.next()+"\t");
		}
		System.out.println();
		//遍历方式三
		for(Object li:list) {
			System.out.print(li+"\t");
		}
	}
}

练习3:
    已知有一个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

package pro_0416_homework;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * 练习3:
	已知有一个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 HomeWork05 
{
	public static void main(String[] args) 
	{
		List<Worker> list=new ArrayList<>();
		list.add(new Worker("zhang3",18,3000));
		list.add(new Worker("li4",25,3500));
		list.add(new Worker("wang5",22,3200));
		System.out.println(list.toString());
		
		/*list.add(1, new Worker("zhao6",24,3300));
		System.out.println(list.toString());*/
		
		/*int q=list.indexOf(new Worker("li4",25,3500));//得到li4的下标(因为重写了equals可以判断值相等)
		//System.out.println(q);//1
		list.add(q, new Worker("zhao6",24,3300));*/
		System.out.println("===2===");
		
		int index=0;
		for(int i=0;i<list.size();i++)
		{
			if("li4".equals(list.get(i).getName()))
			{
				index=i;
			}
		}
		list.add(index, new Worker("zhao6",24,3300));
		System.out.println(list.toString());
		
		/*list.remove(3);
		System.out.println(list.toString());方法错误*/
		System.out.println("====3====");
		index=0;
		for(int i=0;i<list.size();i++)
		{
			if("wang5".equals(list.get(i).getName()))
			{
				index=i;
			}
		}
		list.remove(index);
		System.out.println(list.toString());
		
		//for循环
		for(int i=0;i<list.size();i++)
		{
			System.out.print(list.get(i)+"\t");
		}
		System.out.println();
		//迭代
		Iterator<Worker> it=list.iterator();
		while(it.hasNext())
		{
			Worker w=it.next();
			w.work();
			//System.out.print(it.next()+"\t");
		}
		list.add(new Worker("li4",25,3500));
		System.out.println(list.get(2).equals(new Worker("li4",25,3500)));
	}
}
class Worker  
{
	private int age;
	private String name;
	private double salary;
	
	public Worker (){}
	
	public Worker (String name, int age, double salary)
	{
		this.name = name;
		this.age = age;
		this.salary = salary;
	}
	public int getAge() 
	{
		return age;
	}
	public void setAge(int age) 
	{
		this.age = age;
	}
	public String getName() 
	{
		return name;
	}
	public void setName(String name) 
	{
		this.name = name;
	}
	public double getSalary()
	{
		return salary;
	}
	public void setSalary(double salary)
	{
		this.salary = salary;
	}
	public void work()
	{
		System.out.println(name + "work");
	}

	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		long temp;
		temp = Double.doubleToLongBits(salary);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
		{
			return true;
		}
		if (obj == null)
		{
			return false;
		}
		if(obj instanceof Worker)
		{
			Worker c=(Worker)obj;
			return this.name.equals(c.name) && this.age==c.age && this.salary==c.salary;
		}
		return false;
	}

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

 

练习四:已知有十六支男子足球队参加2008北京奥运会。写一个程序,
 * 把这16 支球队随机分为4 个组并采用两种方式遍历输出。采用List集合和随机数
    2008 北京奥运会男足参赛国家: 
    科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,
    中国,新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利

package pro_0416_homework;

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

/**
 * 练习四:已知有十六支男子足球队参加2008北京奥运会。写一个程序,
 * 把这16 支球队随机分为4 个组并采用两种方式遍历输出。采用List集合和随机数
	2008 北京奥运会男足参赛国家: 
	科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,
	中国,新西兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
 */
public class HomeWork06 
{
	public static void main(String[] args) 
	{
		List<String> list=new ArrayList<>();
		list.add("科特迪瓦");
		list.add("阿根廷");
		list.add("澳大利亚");
		list.add("塞尔维亚");
		list.add("荷兰");
		list.add("尼日利亚");
		list.add("日本");
		list.add("美国");
		list.add("中国");
		list.add("新西兰");
		list.add("巴西");
		list.add("比利时");
		list.add("韩国");
		list.add("喀麦隆");
		list.add("洪都拉斯");
		list.add("意大利");
		System.out.println(list.toString());
		for(int i=1;i<=4;i++)
		{
			System.out.print("第"+i+"组: ");
			for(int j=0;j<4;j++)
			{
				int k=(int)(Math.random()*list.size());//生成4个随机数
				System.out.print(list.remove(k)+"\t");//移除掉
				//System.out.println(k);
			}
			System.out.println();
		}
	}
}

 

练习五:有如下Student 对象,
      private String name;  
    private int age;  
    private int score;  
    private String classNum; 
    其中,classNum 表示学生的班号,例如“class05”。 有如下
        List list = new ArrayList();
        list.add(new Student1("张三", 18, 100, "class05"));  
        list.add(new Student1("李四", 22, 70,  "class04")); 
        list.add(new Student1("王五", 25, 90,  "class05")); 
        list.add(new Student1("赵六", 30, 80 , "class05")); 
        list.add(new Student1("田七", 28, 66,  "class06"));
        list.add(new Student1("丁一", 24, 100, "class04"));
    在这个list 的基础上,完成下列要求: 
    1) 计算所有学生的平均年龄
    2) 计算各个班级的平均分 

package pro_0416_homework;

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

public class HomeWork07 
{
	public static void main(String[] args) 
	{
		List<Student1> list = new ArrayList<>();
		list.add(new Student1("张三", 18, 100, "class05"));  
		list.add(new Student1("李四", 22, 70,  "class04")); 
		list.add(new Student1("王五", 25, 90,  "class05")); 
		list.add(new Student1("赵六", 30, 80 , "class05")); 
		list.add(new Student1("田七", 28, 66,  "class06"));
		list.add(new Student1("丁一", 24, 100, "class04"));
		System.out.println(list.toString());
		
		int sumage=0;
		int sco04=0;
		int sco05=0;
		int sco06=0;
		int sum04=0;
		int sum05=0;
		int sum06=0;
		for(int i=0;i<list.size();i++)
		{
			sumage+=list.get(i).getAge();
			
			String classs=list.get(i).getClassNum();
			if(classs=="class04")
			{
				sum04++;
				sco04+= list.get(i).getScore();
			}
			if(classs=="class05")
			{
				sum05++;
				sco05+=list.get(i).getScore();
			}
			if(classs=="class06")
			{
				sum06++;
				sco06+=list.get(i).getScore();
			}
		}
		System.out.println("所有学生的平均年龄:"+sumage/list.size());
		
		System.out.println("class04班平均分:"+sco04/sum04);
		System.out.println("class05班平均分:"+sco05/sum05);
		System.out.println("class06班平均分:"+sco06/sum06);
	}
}
class Student1
{
	private String name;
	private int age;
	private int score;
	private String classNum;
	
	public Student1(String name, int age, int score, String classNum) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
		this.classNum = classNum;
	}
		
	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 getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public String getClassNum() {
		return classNum;
	}

	public void setClassNum(String classNum) {
		this.classNum = classNum;
	}

	@Override
	public String toString() {
		return "Student1[name=" + name + ", age=" + age + ", score=" + score + ", classNum=" + classNum + "]";
	}
}

方式二

package pro_0416_homework;

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

/**
 * 练习五:有如下Student 对象,
  	private String name;  
    private int age;  
    private int score;  
    private String classNum; 
	其中,classNum 表示学生的班号,例如“class05”。 有如下
		List list = new ArrayList();
		list.add(new Student007("张三", 18, 100, "class05"));  
		list.add(new Student007("李四", 22, 70,  "class04")); 
		list.add(new Student007("王五", 25, 90,  "class05")); 
		list.add(new Student007("赵六", 30, 80 , "class05")); 
		list.add(new Student007("田七", 28, 66,  "class06"));
		list.add(new Student007("丁一", 24, 100, "class04"));
	在这个list 的基础上,完成下列要求: 
    1) 计算所有学生的平均年龄
    2) 计算各个班级的平均分 
 */
public class HomeWork007 
{
	public static void main(String[] args) 
	{
		List<Student007> list = new ArrayList<>();
		list.add(new Student007("张三", 18, 100, "class05"));  
		list.add(new Student007("李四", 22, 70,  "class04")); 
		list.add(new Student007("王五", 25, 90,  "class05")); 
		list.add(new Student007("赵六", 30, 80 , "class05")); 
		list.add(new Student007("田七", 28, 66,  "class06"));
		list.add(new Student007("丁一", 24, 100, "class04"));
		System.out.println(list.toString());
		
		//计算所有学生的平均年龄
		int sumage=0;
		for(int i=0;i<list.size();i++)
		{
			sumage+=list.get(i).getAge();
		}
		System.out.println("所有学生的平均年龄:"+sumage/list.size());
		//计算各个班级的平均分
		System.out.println("class04班平均分:"+ avgScore("class04",list));
		System.out.println("class05班平均分:"+ avgScore("class05",list));
		System.out.println("class06班平均分:"+ avgScore("class06",list));
	}
	public static double avgScore(String className,List<Student007> list)
	{
		double sumScore=0;
		int len=list.size();
		int count=0;
		
		for(int i=0;i<len;i++)
		{
			if(list.get(i).getClassNum()==className)
			{
				sumScore+=list.get(i).getScore();
				count++;
			}
		}
		return sumScore/count;
	}
}
class Student007
{
	private String name;
	private int age;
	private int score;
	private String classNum;
	
	public Student007(String name, int age, int score, String classNum) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
		this.classNum = classNum;
	}
		
	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 getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public String getClassNum() {
		return classNum;
	}

	public void setClassNum(String classNum) {
		this.classNum = classNum;
	}

	@Override
	public String toString() {
		return "Student007[name=" + name + ", age=" + age + ", score=" + score + ", classNum=" + classNum + "]";
	}	
	
}

练习六:(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。

package pro_0416_homework;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 练习六:(List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。
 */
public class HomeWork08 
{
	public static void main(String[] args) 
	{
		/*List<Object> list=new ArrayList<>();
		list.add("张三");
		list.add("李四");
		list.add(5);
		list.add(66);*/
		
		List<Object> list=Arrays.asList("张三","李四",5,66);
		System.out.println(list.toString());
		HomeWork08.reverseList(list);
		HomeWork08.reverseList2(list);
	}
	//方法一
	public static void reverseList(List<Object> list)
	{
		List<Object> newlist=new ArrayList<>();
		int size = list.size();
		for(int i=0;i<size;i++)
		{
			newlist.add(list.get(size-1-i));
		}
		System.out.println(newlist.toString());
	}
	//方法二
	public static void reverseList2(List<Object> list)
	{
		int size = list.size();
		List<Object> str=new ArrayList<>();
		for(int x=0,y=size-1;x<y;x++,y--)
		{
			str.add(list.get(x));
			list.set(x, list.get(y));
			list.set(y, str.remove(0));
		}
		System.out.println(list.toString());
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值