在一些程序题中
我们有时候遇到需要在Main类中使用成员内部类
如何在不对象化我们的Main类的前提下使用成员内部类呢?
示例代码如下:
package p1068;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
m = (int) (m *1.5);
PriorityQueue<Integer> people = new PriorityQueue<>();
ArrayList<Person> persons = new ArrayList<>();
int size = 0;
int id;
int score;
for(int i=0; i<n; i++) {
id = scanner.nextInt();
score = scanner.nextInt();
people.offer(score);
boolean flag = false;
for(int j=0; j<size; j++) {
if(persons.get(j).score == score) {
persons.get(j).id.offer(id);
flag = true;
break;
}
}
if(!flag) {
Person person2 = new Main().new Person();
person2.score = score;
person2.id.offer(id);
persons.add(person2);
size++;
}
}
Stack<Integer> people2 = new Stack<>();
for(int i=0; i<n; i++) {
people2.push(people.poll());
}
Queue<Integer> people3 = new LinkedList<>();
int temp = 0;
for(int i=0; i<m; i++) {
temp = people2.peek();
people3.offer(people2.pop());
}
while(temp == people2.peek()) {
people3.offer(people2.pop());
}
System.out.println(temp + " " + people3.size());
int temp2 = -1;
for(int i=0; i<m; i++) {
if(temp2 != people3.peek()) {
temp2 =people3.peek();
}else {
people3.poll();
continue;
}
for(Person person2 : persons) {
if(person2.score == people3.peek()) {
int w = person2.id.size();
while(!person2.id.isEmpty()) {
System.out.println(person2.id.poll() + " " + person2.score);
}
people3.poll();
break;
}
}
}
}
private class Person{
PriorityQueue<Integer> id = new PriorityQueue<>();
int score;
}
}