1.已知数组存放⼀批QQ号码,QQ号码最⻓为11位,最短为5位String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}。
将该数组⾥⾯的所有
qq
号都存放在
LinkedList
中,将
list
中重复元素删除,将
list
中所有元素分别⽤迭代器和增强
for
循环打印出来
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
public class Homework {
public static void main(String[] args) {
String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"};
LinkedList<String> strss = new LinkedList<>();
for(String x:strs){
if(!strss.contains(x))
strss.add(x);
}
for(Iterator iterator = strss.iterator();iterator.hasNext();){
System.out.print(iterator.next()+"\t");
}
System.out.println();
for(String x:strss){
System.out.print(x+"\t");
}
}
}
2.键盘录⼊⼀个字符串,去掉其中重复字符,打印出不同的那些字符,必须保证顺序。例如输⼊:aaaabbbcccddd,打印结果为:abcd。
import java.util.ArrayList;
import java.util.Scanner;
public class Homework2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = new String();
str = scanner.next();
char [] newStr = str.toCharArray();
ArrayList<Character> strs = new ArrayList<>();
for(char x:newStr){
if(!strs.contains(x)){
strs.add(x);
}
}
for(Character s:strs){
System.out.print(s);
}
}
}
3.
双⾊球规则:双⾊球每注投注号码由
6
个红⾊球号码和
1
个蓝⾊球号码组成。红⾊球号码从
1—33
中选择;蓝⾊球号码从
1—16
中选择;请随机⽣成⼀注双⾊球
号码。(要求同⾊号码不重复)
import java.util.*;
public class Homework3 {
public static void main(String[] args) {
List<Integer> red = new ArrayList<>();
List<Integer> blue = new ArrayList<>();
for(int i=1;i<=33;i++){
red.add(i);
}
for(int i=1;i<=16;i++){
blue.add(i);
}
Collections.shuffle(red);
Collections.shuffle(blue);
for(int i =0;i<6;i++){
System.out.println(i+1+":"+"R"+red.get(i)+" B"+blue.get(i));
}
}
}
4.
分别⽤
Comparable
和
Comparator
两个接⼝对下列四位同学的成绩做降序排序,如果成绩⼀样,那在成绩排序的基础上按照年龄由⼩到⼤排序。
package tosit;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
public class Homework4 {
public static void main(String[] args) {
Set<Student1> s = new TreeSet<>(new MyComparator());
Student1 s1 = new Student1("liusan",20,90.0F);
Student1 s2 = new Student1("lisi",22,90.0F);
Student1 s3 = new Student1("wangwu",20,99.0F);
Student1 s4 = new Student1("sunliu",22,100.0F);
s.add(s1);
s.add(s2);
s.add(s3);
s.add(s4);
for(Student1 x:s){
System.out.println(x.getName()+" "+x.getAge()+" "+x.getScore());
}
}
}
class MyComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Student1 & o2 instanceof Student1){
Student1 s1 = (Student1) o1;
Student1 s2 = (Student1) o2;
if(s1.getScore()>s2.getScore()){
return -1;
} else if (s1.getScore()<s2.getScore()) {
return 1;
} else if (s1.getScore()==s2.getScore()) {
if(s1.getAge()<=s2.getAge()){
return -1;
} else if (s1.getAge()>s2.getAge()) {
return 1;
}
}
}
return 0;
}
}
class Student1{
String name;
float score;
int age;
Student1(String name,int age,float score){
this.age = age;
this.name = name;
this.score = score;
}
int getAge(){
return age;
}
String getName(){
return name;
}
float getScore(){
return score;
}
}
5.
两个对象
Person p1 = new Person(); p2= new Person();
问题
1:
如果两个对象的哈希值相同
p1.hashCode() = p2.hashCode()
,
p1.equals(p2)
⼀定是
true
吗?
问题
2:
如果两个对象的
equals
⽅法返回
true, p1.equals(p2)==true
,两个对象的哈希值⼀定相同吗
?
请说明理由。
回答1:不一定
回答2:不一定
6.自己实现ArrayList
package tosit;
public class ListCopy {
private int length;
private Object[] obj;
private int index = 0;
public ListCopy(int length){
this.length = length;
obj = new Object[length];
}
public void add(Object o){
//如何判断数组是否达到上限
if(index == length){
//上限后扩容
Object[] newobj = new Object[length+length/2];
System.arraycopy(obj,0,newobj,0,length);
newobj[length] = o;
obj = newobj;
index++;
length = length + length / 2;
}else {
obj[index] = o;
index++;
}
}
public void show(){
for(Object o : obj){
System.out.println(o);
}
}
public int size(){
return index;
}
public Object get(int i){
return obj[i];
}
public boolean contain(Object hello){
for(Object o:obj){
if(o!=null){
if(o.equals(hello)){
return true;
}
}
}
return false;
}
public boolean remove(int i){
if(i>index){
return false;
}else{
Object[] newobj=new Object[length];
System.arraycopy(obj,0,newobj,0,i);
System.arraycopy(obj,i+1,newobj,i,length-i-1);
obj=newobj;
index--;
return true;
}
}
}