首页 > 编程语言 >Java 实验8 集合类

Java 实验8 集合类

时间:2024-06-08 14:29:00浏览次数:29  
标签:Java String students add 实验 Student 集合 new public

(一)实验目的

1、掌握JAVA集合类中的Collection的特点及其应用情形;

3、掌握Collection、熟悉集合的特点及应用。

(二)实验内容和步骤

1、仿照课堂练习的MyStack示例,使用LinkedList集合类实现一个先进先出的队列数据结构,可以往该结构中压入数据push()以及弹出数据pop(),并遵循先进入先出队的规则。创建该结构,并使用该结构,调用其方法,实现数据存入和取出并显示。

package CollectionClassPractice;

import java.util.LinkedList;

public class MyStackClass {
	public static void main(String[] args) {
		LinkedList<Integer> queue = new LinkedList<Integer>();
		//存入数据
		System.out.println("队列元素:");
		push(queue, 1);  push(queue, 2);   push(queue, 3);   push(queue, 4);  push(queue, 5);
		for(int i=0; i<queue.size(); i++)
		{
			System.out.print(queue.get(i));
			System.out.print(' ');
		}
		System.out.print('\n' + "取出队头元素:");
		System.out.print(pop(queue));  System.out.print(' ');
		System.out.print(pop(queue));
	}
	
	public static int pop(LinkedList<Integer> a)
	{
		int x = a.getFirst();
		a.removeFirst();
		return x;
	}

	public static void push(LinkedList a, int x)
	{
		a.addLast(x);
	}
}

【运行结果】

2、 集合的嵌套遍历:
现在计算机科学与技术系2022届共有5个班级,2个外包班,3个应用班,每个班都有不同的学生,外包1班有5个学生,计算机应用1班有3个学生,计算机应用2班有4个学生.遍历打印年级学生信息。

分析:用集合去存储并且遍历每个学生。最终选择ArrayList去存储

package CollectionClassPractice;

import java.util.ArrayList;

class Student
{
	String name;
	int age;
	
	public Student(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
}

public class StudentClassNestedTraversal {
	public static void main(String[] args) {
		ArrayList<Student> students = new ArrayList<Student>();
		students.add(new Student("外包1班学生1", 18));		students.add(new Student("外包1班学生2", 12));
		students.add(new Student("外包1班学生3", 12));		students.add(new Student("外包1班学生4", 12));
		students.add(new Student("外包1班学生5", 12));
		
		students.add(new Student("计算机应用1班学生1", 20));		students.add(new Student("计算机应用1班学生2", 20));
		students.add(new Student("计算机应用1班学生3", 20));
		
		students.add(new Student("计算机应用2班学生1", 21));		students.add(new Student("计算机应用2班学生2", 21));
		students.add(new Student("计算机应用2班学生3", 21));		students.add(new Student("计算机应用2班学生4", 21));
		
		for(Student s: students)
		{
			System.out.println("学生姓名:"+s.getName()+" 年龄:"+s.getAge());
		}
	}
}

【运行结果】

3、键盘录入多个整型数据,以-1结束,按格式输出排序后的数据,输入格式要求如下:以逗号分隔整数,如:4752344254. 输出排序后的结果为:4, 42, 54, 75, 234 。

  1. 用正则表达式分割字符串,得到字符串数组: split()方法
  2. 转换为整型集合:for循环将字符串数组中的元素遍历取出,加入到集合中
  3. 使用Collections工具类对集合进行排序
  4. 输出排序后的集合元素
package CollectionClassPractice;

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

//4,75,234,42,54,-1

public class Exercise3 {
	public static void main(String[] args) {
		String s = "4,75,234,42,54,-1";
		String a[] = s.split(",");
		List<Integer> list = new ArrayList<Integer>();
		for(String temp : a)
		{
			if(temp.equals("-1"))
				break;
			Integer i = Integer.valueOf(temp);
			list.add(i);
		}
		Collections.sort(list);
		
		for(Integer temp : list)
		{
			System.out.println(temp);
		}
	}
}

【运行结果】

4、TreeSet集合存储自定义对象并遍历:如果对象的成员变量值相同即为同一个对象,按照年龄进行从大到小进行排序。分别用自然排序,实现接口Comparator类,内部类三种方法实现

package Tree3KindCompare;

import java.util.Comparator;
import java.util.TreeSet;

class Student implements Comparable<Student> { //自然排序
    public String name;
    public int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int compareTo(Student o) { //自然排序
        return this.age - o.age;
    }
    
    public String toString() { //用于输出,不写就只有地址
        return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

//实现接口Comparator类
class AgeCompare implements Comparator<Student>{

	public int compare(Student o1, Student o2) {
		// TODO Auto-generated method stub
		return o1.getAge() - o2.getAge();
	}
	
}

public class TreesetDemo {
	public static void main(String[] args) {
		//自然排序
		TreeSet<Student> tree = new TreeSet<Student>();
		tree.add(new Student("张三", 20));
		tree.add(new Student("赵六", 23));
		tree.add(new Student("李四", 21));
		tree.add(new Student("王五", 22));
		
		System.out.println(tree);
		System.out.println("------------------------------------");
		
		//实现内部类
		TreeSet<Student> tree1 = new TreeSet<Student>(new Comparator<Student>() {
			public int compare(Student o1, Student o2) {
				// TODO Auto-generated method stub
				return o1.getAge() - o2.getAge();
			}
		});
		
		tree1.add(new Student("张三", 20));
		tree1.add(new Student("赵六", 23));
		tree1.add(new Student("李四", 21));
		tree1.add(new Student("王五", 22));
		
		System.out.println(tree1);
		System.out.println("------------------------------------");
		
		//实现接口Comparator类
		TreeSet<Student> tree2 = new TreeSet<Student>(new AgeCompare()); //自定义AgeCompare
		
		tree2.add(new Student("张三", 20));
		tree2.add(new Student("赵六", 23));
		tree2.add(new Student("李四", 21));
		tree2.add(new Student("王五", 22));
		
		System.out.println(tree2);
	}
}

【运行结果】

5"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

package MapUsed;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo {
    public static void main(String[] args) {
        String s = "aababcabcdabcde";
        Map<Character, Integer> mp = new HashMap<Character, Integer>();
     // 遍历字符串s中的每个字符
        for (char c : s.toCharArray()) {
        	// put添加数据。如果字符c已经在map中,则将其计数加1;否则将其添加到map中并设置计数为1
            mp.put(c, mp.getOrDefault(c, 0) + 1); 
        }
        
        // 遍历map中的每个条目
        Set<Character> keys = mp.keySet();
        for(char key : keys)
        {
        	int value = mp.get(key);
        	System.out.println(key + "(" + value + ")");
        }
    }
}

【运行结果】

标签:Java,String,students,add,实验,Student,集合,new,public
From: https://blog.csdn.net/CH3CH2CH4/article/details/139246487

相关文章

  • 【JAVASE】日期与时间类(上)
    一:概述从JAVASE8开始提供了java.time包,该包中有专门处理日期和时间的类。LocalDate  LocalDateTime  和LocalTime类的对象封装和日期、时间有关的数据,这三个类都是final类,而且不提供修改数据的方法,即这些类的对象的实体不可再发生变化,属于不可变对象。二:LocalDat......
  • 实验 6
    task1点击查看代码#include<stdio.h>#include<string.h>#defineN3 //运行程序输入测试时,可以把这个数组改小一些输入测试typedefstructstudent{ intid; //学号 charname[20]; //姓名 charsubject[20]; //考试科目 doubleperf; //平时成......
  • ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】
    前言:......
  • 【GD32F303红枫派使用手册】第十节 FWDGT-独立看门狗实验
    10.1实验内容通过本实验主要学习以下内容:独立看门狗的原理独立看门狗功能介绍实现独立看门狗功能10.2实验原理10.2.1看门狗的原理一般来说,搭配MCU的产品都需要有长期运行的需求,特别像一些工业设备,可能要求运行个几年都不关机,但谁也不能保证在这几年里,MCU里面的代码......
  • 【GD32H757Z海棠派使用手册】第十三讲 USB-虚拟键盘实验
    13.1实验内容通过本实验主要学习以下内容:USB协议基本原理GD32H7xxUSBHS的使用虚拟键盘的协议原理及使用13.2实验原理13.2.1USB通信基础知识USB的全称是UniversalSerialBus,通用串行总线。它的出现主要是为了简化个人计算机与外围设备的连接,增加易用性。USB支持热......
  • Java毕业设计-基于springboot开发的善筹网(众筹)前后台实现设计-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、管理员功能实现1.1众筹管理1.2商品信息管理1.3商品类型管理四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的善筹网(众......
  • JAVA面向对象三大特征之继承
    目录1.继承概述2.继承的格式 3.继承的好处3.1继承的使用时机3.2注意4.继承中变量的访问特点5.总结1.继承概述在继承中我们可以把类分为两种一种是父类一种是子类,子类在继承父类后会获得父类中的属性和方法,在父类中定义过的属性和方法,子类中不需要再写一遍,同时子......
  • Java那些事儿 —— 写一篇妈妈也能看懂的Java学习笔记
    Java那些事儿——写一篇妈妈也能看懂的Java学习笔记小白也能看懂的Java学习笔记(因为我也是小白,所以写一点小白自己能看懂的东西)这本笔记包括但是不限于Java知识,(做开发没多久感觉自己忘记的差不多了,最近又看了几本书,心血来潮写一个笔记)写这个的目的意在自我复习,尽量让自......
  • JavaScript中的数据类型
    概要ECMAScript的类型一共分为两大类,值类型以及引用类型。值类型又称基础类型,具体如下:undefined未定义null空boolean布尔number数值string字符串symbol标记引用类型又称复杂类型Object(对象),具体如下:Object对象Function函数Array数组RegExp正则Date日期基......
  • 计算机网络实验二:动态路由配置
    这个是pkt文件https://pan.quark.cn/s/5a80aa8a21f7发现复制不来图片把实验报告也放在夸克网盘大家自行下载https://pan.quark.cn/s/1d9ea9d31bea有兴趣的可以一点一点跟着做没兴趣的自行下载提交(手动狗头)实验报告里面有私货记得删除修改这个pkt文件我没有配置协......