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 问题描述
- 使用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 运行结果