1.
package D03_核心类库_03集合.zy.数据结构训练hjg;
/*1、定义一个方法 listTest(ArrayList<String> list, String name),
要求返回 name 在 list 里面第一次出 现的索引,如果 name 没出现过返回-1。*/
import java.util.ArrayList;
import java.util.Scanner;
public class Java基础知识List练习作业_01 {
public static void main(String[] args) {
ArrayList<String> nameDirectory = new ArrayList<>();
nameDirectory.add("张三");
nameDirectory.add("李四");
nameDirectory.add("王五");
nameDirectory.add("刘六");
while(true){
System.out.println("=======名字检索系统=======");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int index = listTest(nameDirectory,input);
if(index == -1){
System.out.println(input + "不在该链表中");
}else{
System.out.println(input + "的index为" + index);
}
}
}
public static int listTest(ArrayList<String> list, String name){
int len = list.size();
for(int i = 0; i < len; i++){
if(list.get(i).equals(name)){
return i;
}
}
return -1;
}
}
2. set
package D03_核心类库_03集合.zy.数据结构训练hjg;
/*2、已知数组存放一批 QQ 号码,长度 5-11 位,
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"}。
将该数组里面的所有qq号都存放在 LinkedList 中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来。*/
import java.util.HashSet;
import java.util.Set;
public class Java基础知识List练习作业_02 {
public static void main(String[] args) {
Set<String> set = new HashSet<String>(); // 实例化Set接口对象
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"};
for(int i = 0;i<strs.length;i++) {
set.add(strs[i]);
}
//遍历
for (String name : set) { System.out.print(name+" "); }
}
}
2.1 LinkedList
package D03_核心类库_03集合.zy.数据结构训练;
import java.util.Iterator;
import java.util.LinkedList;
public class Java基础知识List练习作业_02b {
public static void main(String[] args) {
String[] strs = {"10001", "10086", "12347806666", "45612378901", "10001", "12347806666"};
LinkedList<String> list = getList(strs);
//增强型for循环
System.out.println("------增强型for循环------");
for(String i : list){
System.out.println(i);
}
//迭代器
System.out.println("---------迭代器---------");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String s = iterator.next();
System.out.println(s);
}
}
public static LinkedList<String> getList(String[] strs){
LinkedList<String> list = new LinkedList<String>();
for(int i=0; i<strs.length; i++){
if(list.contains(strs[i])){
continue;
}
list.add(strs[i]);
}
return list;
}
}
3. Set
package D03_核心类库_03集合.zy.数据结构训练hjg;
/*3、请随机生成一注双色球号码。(要求同色号码不重复)。双色球规则:双色球每注投注号码由 6 个红色 球号码和 1 个蓝色球号码组成。
红色球号码从 1—33 中选择;蓝色球号码从 1—16 中选择;*/
import java.util.HashSet;
import java.util.Set;
public class Java基础知识List练习作业_03 {
public static void main(String[] args) {
Set<String> set1 = new HashSet<String>();
while(set1.size() < 6){
set1.add((int)(Math.random()*33+1)+" ");
}
System.out.println("红色:"+set1+"\n"+"蓝色:"+(int)(Math.random()*16+1));
}
}
3.1 LinkedList
package D03_核心类库_03集合.zy.数据结构训练;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
public class Java基础知识List练习作业_03b {
public static void main(String[] args) {
while(true){
menu();
}
}
public static int menu(){
System.out.println("======欢迎来到双色球游戏======");
System.out.println("请输入相应编号继续游戏:");
System.out.println("1-开始游戏 2-退出游戏");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int num = -1;
try{
num = Integer.parseInt(input);
}catch(NumberFormatException e){
System.out.println("请输入数字");
return menu();
}
if(num < 1 || num > 2){
System.out.println("请输入正确的数字");
return menu();
}
if(num == 1){
getball();
}else{
System.exit(1);
}
return -1;
}
public static void getball(){
System.out.println("正在生成一注双色球号码...");
System.out.println("生成成功!");
System.out.println("红色球号码为:");
LinkedList<Integer> redBall = getRedBall();
for(Integer i : redBall){
System.out.print(i);
System.out.print('\t');
}
System.out.println();//换行
System.out.println("蓝色球号码为:");
int blueNum = getBlueBall();
System.out.println(blueNum);
}
public static LinkedList<Integer> getRedBall(){
LinkedList<Integer> red = new LinkedList<>();
Random random = new Random();
while(red.size() < 6){
int code = (int)(1 + Math.random() * 33);
if(red.contains(code)){
continue;
}
red.push(code);
}
return red;
}
public static int getBlueBall(){
Random random = new Random();
return (int)(1 + Math.random() * 16);
}
}
4. Comparable Comparator
package D03_核心类库_03集合.zy.数据结构训练hjg;
//4、分别用 Comparable 和 Comparator 两个接口对下列四位同学的成绩做降序排序,
// 如果成绩一样,那在 成绩排序的基础上按照年龄由小到大排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Java基础知识List练习作业_04 {
public static void main(String[] args) {
Student s1 = new Student("贾宝玉",14,88.5);
Student s2 = new Student("林黛玉",13,90.5);
Student s3 = new Student("史湘云",13,85.5);
Student s4 = new Student("薛宝钗",15,91.0);
Student s5 = new Student("工具人",15,88.5);
ArrayList<Student> studentList = new ArrayList<>();
studentList.add(s1);
studentList.add(s2);
studentList.add(s3);
studentList.add(s4);
studentList.add(s5);
System.out.println("--------comparable实现方法--------");
System.out.println("原来的顺序");
for(Student s : studentList){
System.out.println(s);
}
System.out.println("--------------"+'\n' + "现在的顺序:");
Collections.sort(studentList);
for(Student s : studentList){
System.out.println(s);
}
System.out.println();
System.out.println("--------comparator实现方法--------");
System.out.println("原来的顺序");
for(Student s : studentList){
System.out.println(s);
}
System.out.println("--------------"+'\n' + "现在的顺序:");
Collections.sort(studentList,new comparator());
for(Student s : studentList){
System.out.println(s);
}
}
static class Student implements Comparable<Student>{
private String name;
private int age;
private double points;
public Student(String name, int age, double points) {
this.name = name;
this.age = age;
this.points = points;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", points=" + points +
'}';
}
@Override
public int compareTo(Student o) {
if(o.points == this.points){
return this.age - o.age;
}
if(o.points - this.points > 0){
return 1;
}else if(o.points - this.points < 0){
return -1;
}else{
return 0;
}
}
}
static class comparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if(o1.points == o2.points){
return o1.age - o2.age;
}
if(o1.points - o2.points > 0){
return -1;
}else if(o1.points - o2.points < 0){
return 1;
}else{
return 0;
}
}
}
}
4.1 LinkedList
package D03_核心类库_03集合.zy.数据结构训练;
//4、分别用 Comparable 和 Comparator 两个接口对下列四位同学的成绩做降序排序,
// 如果成绩一样,那在 成绩排序的基础上按照年龄由小到大排序。 ??????????
import java.util.LinkedList;
public class Java基础知识List练习作业_04 {
public static void main(String[] args) {
String[] info = { "贾宝玉 14 88.5f", "林黛玉 13 90.5f", "史湘云 13 85f", "薛宝钗 15 91f" };
SSSS[] stus = new SSSS[4];
LinkedList<SSSS> list = new LinkedList<SSSS>();
for (int i = 0; i < 4; i++) {
String[] inf = info[i].split(" "); //分割
String name = inf[0];
int age = Integer.parseInt(inf[1]);
float grade = Float.parseFloat(inf[2]);
stus[i] = new SSSS(name, age, grade);
list.add(stus[i]);
}
System.out.println("原信息:");
for (SSSS stu : list)
stu.printy();
sort(list);
System.out.println("排序后:");
for (SSSS stu : list)
stu.printy();
}
private static void sort(LinkedList<SSSS> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 0; j < list.size() - 1 - i; j++) {
float flag = list.get(j).grade - (list.get(j + 1).grade);
if (flag < 0) {
SSSS temp = list.get(j + 1); //完成替换
list.set(j + 1, list.get(j));
list.set(j, temp);
} else if (flag == 0) {
boolean nf = list.get(j).age > (list.get(j + 1).age);
if (nf) {
SSSS temp1 = list.get(j + 1);
list.set(j + 1, list.get(j));
list.set(j, temp1);
}
}
}
}
}
}
class SSSS {
String name;
int age;
float grade;
public SSSS(String name, int age, float grade) {
super();
this.name = name;
this.age = age;
this.grade = grade;
}
public void printy() {
System.out.println("姓名:" + name + "\t年龄: " + age + "\t成绩: \t" + grade);
}
}
笔记 而已,