1、
定义一个方法 listTest(ArrayList<String> list, String name),要求返回
name 在 list 里面第一次出现的索引,如果 name 没出现过返回-1。
package collection;
import java.util.ArrayList;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<String> nameList = new ArrayList<>();
nameList.add("小A");
nameList.add("小B");
nameList.add("呵呵君");
nameList.add("哒哒哒");
while (true){
System.out.println("你要找谁:");
String name = in.nextLine();
int index = listTest(nameList, name);
if (index == -1){
System.out.println("没这个人\n");
} else{
System.out.println(name + "的index是:" + index + "\n");
}
}
}
public static int listTest(ArrayList<String> list, String name){
int size = list.size();
for (int i = 0; i < size; i++) {
if (list.get(i).equals(name)){
return i;
}
}
return -1;
}
}
2、已知数组存放一批 QQ 号码,长度 5-11 位,
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"}。
将该数组里面的所有 qq 号都存放在 LinkedList 中,将 list 中重复元素删
除,将 list 中所有元素分别用迭代器和增强 for 循环打印出来
package collection;
import java.util.Iterator;
import java.util.LinkedList;
public class demo2 {
public static void main(String[] args) {
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"};
LinkedList<String> qqList = getList(strs);
// 迭代器打印
System.out.println("------------迭代器------------");
Iterator<String> i = qqList.iterator();
while (i.hasNext()){
System.out.print(i.next() + " ");
}
System.out.println();
// 增强for循环打印
System.out.println("----------增强for循环---------");
for (String name: qqList) {
System.out.print(name +" ");
}
}
// 获取无重复的List
public static LinkedList<String> getList(String[] strs){
LinkedList<String> list = new LinkedList<>();
for (int i = 0; i < strs.length; i++) {
if (!list.contains(strs[i])){
list.add(strs[i]);
}
}
return list;
}
}
3、分别用Comparable和Comparator两个接口对下列四位同学的成绩做降
序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。
package collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class demo3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
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("--------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;
}
}
}
}