Java集合类实验集

1、题目一:List简单操作

1.1 问题描述

List接口的特有方法:1)编写一个类Example01;2)在类中定义两个List集合,并向其中一个集合中添加数据;3)用subList(int fromIndex, int toIndex)方法获取集合的一部分;4)用set(int index, E element)方法修改一个元素;5)用add(int index, E element)方法增加一个元素。

1.2 解题思路

需要运用到List集合的常用方法

void add(int index,Object element) //将元素element插入在List集合的index处
Object get(int index) //返回集合索引index处的元素
Object set(int index,Object element) //将集合索引index处的元素替换成element对象,并将替换后的元素返回。
List subList(int fromIndex,int toIndex) //返回从索引fromIndex(包括)到toIndex(不包括)处的所有元素组成的子集合。

1.3 运行代码

import java.util.*;

public class Example01 {
    public static void main(String[] args){
        List list=new ArrayList(); //创建ArrayList集合
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        System.out.println("列表为:"+list);
        List list1=new ArrayList(); //新创建一个列表
        //用subList(int fromIndex, int toIndex)方法获取集合的一部分
        list1=list.subList(0, 2);
        System.out.println("新列表为:"+list1);
        //用set(int index, E element)方法修改一个元素
        list.set(0, "张一");
        System.out.println("修改第一个元素为:"+list.get(0));
        //用add(int index, E element)方法增加一个元素。
        list.add(3, "珊珊");
        System.out.println("列表中第四个元素为:"+list.get(3));
    }
}

1.4 运行结果

 2、题目二:List特有接口

2.1 问题描述

ArrayList集合的存取:1)编写一个类Example02;2)在类中定义一个ArrayList集合; 3)用add()方法向集合中添加元素;4)用get()方法获取集合中的指定元素,由于ArrayList集合的索引的取值范围是从0开始的,最后一个索引是size-1。所以,要获取集合中的第2个元素应该是get(1)。

2.2 解题思路

需要运用到List集合的常用方法

Object get(int index) //返回集合索引index处的元素
boolean add(Object o) //向集合添加一个元素

2.3 运行代码

import java.util.ArrayList;

public class Example02 {
    public static void main(String[] args){
        ArrayList list=new ArrayList<>(); //创建ArrayList集合
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        System.out.println("第二个元素是:"+list.get(1));

    }
}

2.4 运行结果

 3、题目三:LinkedList集合

3.1 问题描述

LinkedList集合的特殊方法:1)编写一个类Example03,在该类中定义一个LinkedList集合; 2)分别使用addFirst()和addLast()方法向集合中添加元素; 3)使用peekFirst()方法获取集合中的第一个元素; 4)使用pollFirst()方法获取并移除集合中的第一个元素; 5)使用pollLast()方法获取并移除集合中的最后一个元素;

3.2 运行代码

import java.util.LinkedList;

public class Example03 {
    public static void main(String[] args){
        LinkedList link=new LinkedList<>(); //创建LinkedList集合
        //调用addFirst()向集合添加元素,最开始加入的数到了最后
        link.addFirst("e");
        link.addFirst("d");
        link.addFirst("c");
        link.addFirst("b");
        link.addFirst("a");
        System.out.println("向列表表头添加元素的结果为:"+link);

        //调用addList()向集合添加元素
        link.addLast("f");
        link.addLast("g");
        System.out.println("向列表末尾添加元素的结果为:"+link);
        
        //使用peekFirst()方法获取集合中的第一个元素
        System.out.println("集合的第一个元素为:"+link.peekFirst());

        //使用pollLast()方法获取并移除集合中的最后一个元素
        System.out.println("被移除的元素为:"+link.pollLast());
        System.out.println("使用pollLast()方法后的列表为:"+link);
    }
}

3.3 运行结果

  4、题目四:foreach循环

4.1 问题描述

用foreach循环简化遍历:1)编写一个类Example05;2)在该类中定义一个List集合,向集合中添加四个元素;3)用foreach循环遍历集合中的元素;4)在类中定义一个数组arr,静态初始化数组int[] arr = {3,2,6};5)用foreach循环遍历arr中的元素。

4.2 运行代码

import java.util.ArrayList;

public class Example05 {
    public static void main(String[] args){
        ArrayList list=new ArrayList<>(); //创建ArrayList集合
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        for(Object obj:list){
            System.out.println(obj);
        }
        //定义一个数组
        int[] arr={3,2,6};
        //用foreach遍历
        System.out.println("遍历的数组为:");
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

4.3 运行结果

  5、题目五:LinkedList集合

5.1 问题描述

LinkedList集合的特殊方法:1)编写一个类Example03,在该类中定义一个LinkedList集合; 2)分别使用addFirst()和addLast()方法向集合中添加元素; 3)使用peekFirst()方法获取集合中的第一个元素; 4)使用pollFirst()方法获取并移除集合中的第一个元素; 5)使用pollLast()方法获取并移除集合中的最后一个元素;

5.2 运行代码

import java.util.LinkedList;

public class Example03 {
    public static void main(String[] args){
        LinkedList link=new LinkedList<>(); //创建LinkedList集合
        //调用addFirst()向集合添加元素,最开始加入的数到了最后
        link.addFirst("e");
        link.addFirst("d");
        link.addFirst("c");
        link.addFirst("b");
        link.addFirst("a");
        System.out.println("向列表表头添加元素的结果为:"+link);

        //调用addList()向集合添加元素
        link.addLast("f");
        link.addLast("g");
        System.out.println("向列表末尾添加元素的结果为:"+link);
        
        //使用peekFirst()方法获取集合中的第一个元素
        System.out.println("集合的第一个元素为:"+link.peekFirst());

        //使用pollLast()方法获取并移除集合中的最后一个元素
        System.out.println("被移除的元素为:"+link.pollLast());
        System.out.println("使用pollLast()方法后的列表为:"+link);
    }
}

5.3 运行结果

  6、题目六:ktv点歌系统

6.1 问题描述

  1. 使用LinkedList实现一个模拟KTV点歌系统的程序,效果如下图。

6.2 运行代码

import java.util.ArrayList;
import java.util.Scanner;

public class Example06 {
    public static void main(String[] args) {
        int choice ;
        ArrayList<String> MusicList=new ArrayList<String>();
        Scanner scanner=new Scanner(System.in); //输入
        show();
        Init(MusicList);
        System.out.println("请输入你要执行的操作序号");
        if(scanner.hasNextInt()) {
            choice=scanner.nextInt();
        }else {
            choice=4;
        }
        while (choice!=3)
        {
            switch (choice) {
                case (0):
                    addMusic(MusicList);
                    break;
                case (1):
                    moveMusicFirst(MusicList);
                    break;
                case (2):
                    moveMusicBefore(MusicList);
                    break;
                default:
                    System.out.println("请输入0-2数字");
                    break;
            }
            show();
            System.out.println("请输入你要执行的操作序号");
            if(scanner.hasNextInt()) {
                choice=scanner.nextInt();
            }else {
                choice=4;
            }
            System.out.println("当前歌曲列表:"+MusicList);

        }
        System.out.println("--------------------退出-----------------------");
        System.out.println("你已退出系统");
    }
    static void show(){
        System.out.println("------------------------欢迎来到点歌系统-----------------------------");
        System.out.println("0.添加歌曲至列表");
        System.out.println("1.将歌曲置顶");
        System.out.println("2.将歌曲移至前一位");
        System.out.println("3.退出");
    }
    static void Init(ArrayList<String> MusicList)
    {
        MusicList.add("稻香");
        MusicList.add("夜曲");
        MusicList.add("夜的第七章");
        MusicList.add("听妈妈的话");
        MusicList.add("龙卷风");
        System.out.println("初始歌曲列表:"+MusicList);
    }
    static void addMusic(ArrayList<String> MusicList)
    {
        System.out.println("请输入你要添加的歌曲名称:");
        Scanner scanner=new Scanner(System.in);
        String MusicName=scanner.nextLine();
        MusicList.add(MusicName);
        System.out.println("已加入歌曲:"+MusicList.get(MusicList.size()-1));
        System.out.println("当前歌曲列表"+MusicList);
    }
    static void moveMusicFirst(ArrayList<String> MusicList)
    {
        System.out.println("请输入你要置顶歌曲的名称:");
        Scanner scanner=new Scanner(System.in);
        String MusicName=scanner.nextLine();
        //判断有没有这首歌
        for(Object i:MusicList)
        {
            if(i.equals(MusicName))
            {
                MusicList.remove(MusicName);
                MusicList.add(0,MusicName);
                System.out.println("已将歌曲"+MusicName+"置顶");
                return;
            }
        }
        System.out.println("没有这首歌");
    }
    static void moveMusicBefore(ArrayList<String> MusicList)
    {
        System.out.println("请输入你要置前歌曲的名称:");
        Scanner scanner=new Scanner(System.in);
        String MusicName=scanner.nextLine();
        //判断有没有这首歌
        for(int i=0;i<MusicList.size();i++)
        {
            if((MusicList.get(i)).equals(MusicName))
            {
                MusicList.add(i-1,MusicName);
                MusicList.remove(i+1);
                System.out.println("已将歌曲"+MusicList.get(0)+"置前");
                return;
            }
        }
        System.out.println("没有这首歌");
    }
}

6.3 运行结果

   7、题目七:泛型接口以及其实现类

7.1 问题描述

请按照下列提示编写一个泛型接口以及其实现类。

 提示:

1创建一个泛型接口Generic<T>,并创建一个抽象方法get(T t);

2创建一个实现类GenericImpl<T>,空实现get(T t)方法。

7.2 运行代码

//泛型接口
interface Generic<T> { 
    void get(T t);
}
//实现类
class GenericImpl<T> implements Generic<T> {
    @Override
    public void get(T t) {
        System.out.println(t);
    }
}
//测试类
public class text1 {
    public static void main(String[] args) {
        GenericImpl<String> g1 = new GenericImpl<>();
        g1.get("王王王");

        GenericImpl<Integer> g2 = new GenericImpl<>();
        g2.get(22);
    }
}

7.3 运行结果

 8、题目八

8.1 问题描述

请按照下列要求编写程序。

1 编写一个Student类,包含name和age属性,提供有参构造方法。

2 在Student类中,重写toString()方法,输出age和name的值。

3 在Student类中,重写hashCode()和equals()方法 a.hashCode()的返回值是name的hash值与age的和。b.equals()判断对象的name和age是否相同,相同则返回true不同返回false。

(4)最后编写一个测试类,创建一个HashSet<Student>对象hs,向hs中添加多个Student对象,假设有两个Student对象相等,输出HashSet,观察是否添加成功。

8.2 运行代码

import java.util.HashSet;

class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    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;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
 
        Student student = (Student) o;
 
        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }
 
    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }
}
public class text1 {
    public static void main(String[] args) {
        //创建HashSet集合对象
        HashSet<Student> hs = new HashSet<Student>();
        //创建学生对象
        Student s1 = new Student("王不易", 30);
        Student s2 = new Student("毛不易", 35);
        Student s3 = new Student("薛之谦", 33);
        Student s4 = new Student("薛老", 33);
        //把学生添加到集合
        hs.add(s1);
        hs.add(s2);
        hs.add(s3);
        hs.add(s4);
        //遍历集合(增强for)
        for (Student s : hs) {
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

8.3 运行结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值