此代码在提交平台超出了内存限制,怎样才能让代码在内存限制内?下面这段代码该如何改?
import java.util.Arrays;
import java.util.Scanner;
class Person implements Comparable<Person>{
private String num ;
private String name ;
private String sex ;
private String address ;
public Person(String num, String name, String sex, String address) {
super();
this.num = num;
this.name = name;
this.sex = sex;
this.address = address;
}
public String getNum() {
return num;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public String getAddress() {
return address;
}
@Override
public int compareTo(Person o){
if(this.num.compareTo(o.num) > 0){
return 1 ;
}else if(this.num.compareTo(o.num) < 0){
return -1 ;
}else{
return 0 ;
}
}
@Override
public String toString() {
return num + " " + name + " " + sex + " " + address;
}
}
class Find{
private Person person[] ;
private int t ;
public void setay(int n){
person = new Person[n] ;
t = 0 ;
}
public void getData(Person p){
person[t] = p ;
t++ ;
}
public void Look(String pr[]){
Arrays.sort(person);
for(int i=0; i<pr.length; i++){
int index = binarySearch(person, pr[i]) ;
if(index >= 0){
System.out.println(person[index]);
}else{
System.out.println("找不到");
}
}
}
public int binarySearch(Person person[],String key ){
int low = 0;
int high = person.length - 1;
int middle = 0 ;
if(key.compareTo(person[low].getNum()) < 0 ||
key.compareTo(person[high].getNum()) > 0||
low > high){
return -1 ;
}
while(low <= high){
middle = (low + high) / 2 ;
if(person[middle].getNum().compareTo(key) > 0){
high = middle - 1 ;
}else if(person[middle].getNum().compareTo(key) < 0){
low = middle + 1 ;
}else{
return middle ;
}
}
return -1 ;
}
}
public class oj1893 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in) ;
int n = sc.nextInt();
Find find = new Find() ;
find.setay( n );
for(int i=0; i<n; i++){
Person pr = new Person(sc.next(),sc.next(),sc.next(),sc.next());
find.getData( pr ) ;
}
while(sc.hasNext()){
int m = sc.nextInt() ;
if(m == 0)
break ;
String s[] = new String[m] ;
for(int j=0; j<m; j++){
s[j] = sc.next() ;
}
find.Look( s );
}
sc.close() ;
}
}