首页 > 编程语言 >电信l1研发工程师 --- java题库

电信l1研发工程师 --- java题库

时间:2022-09-18 17:58:24浏览次数:105  
标签:java Comparator int --- emp l1 Integer public emps

 

编程题目
1,严格按照题目提示编程。比如 定义一个公共类Main和静态方法main
public class Main
{
public static void main(String[] args){

//这里开始写程序
}
}
2.不要带有包名
3.严格按照提示的输入和输出定义函数的输入输出,千万不要随意输出,因为任何的输出到屏幕都会作为您答案的一部分;
比如:题目提示会
自动输入3,输出
a->b
a->c

编程如下
public class Main
{
public static void main(String[] args){


Scanner in=new Scanner(System.in);

int n=in.nextInt();//此时输入n=3

System.out.println("a->b");//此时输出a->b并回车
System.out.println("a->c");
}
}

之后测试程序会自动向程序输入3,并查看输出是否为
a->b
a->c
如果是表示正确

4.只允许标准输入输出,不允许读写文件
5.不要引用不必要的头文件或命名空间。
6.编程程序运行在linux下因此要遵守linux特性,比如大小写敏感、回车只有一个\n
7.多次提交,实时评测结果
8.使用多个搜索引擎和使用关键字
比如题目是xxxxxxx instrumentation harvester watch 和 notification xxxxxxx,其他都是中文,直接搜索不到答案,因此只搜索英文
关键字就是
instrumentation harvester watch notification
如果百度搜索不到还有so、搜狗、bing、google
9.一个文件可以有多个类但是必须有且仅有一个public类作为入口
10.考试范围主要是java基础,个别几道涉及java框架会有点难度

 

 

汉诺塔,三个步骤,两个递归,分而治之

import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
h(n,'a','b','c');
}
public static void h(int n, char a,char b,char c){
if(n==1){
System.out.println(a+"->"+c);
}else{
h(n-1,a,c,b);//1.a到b柱子
System.out.println(a+"->"+c);//2.a到c柱子
h(n-1,b,a,c);//3.b到c柱子
}
}
}

 

某公司要针对员工情况统一调薪,现有一个员工列表,包含姓名、职级、工作年限、工资信息。现要求将该列表按以下规则重新排序:

1、职级高的排在前面

2、若职级相同,按工资少的排前面

3、若工资相同,工作年限长的排前面

输入描述:

第一行输入一个整数n,表示员工列表中员工的人数

接下来的n行,分别输入员工的姓名、职级、工作年限和工资信息,各项信息用空格分隔

输出描述:

输出按要求重新排列的员工列表,每名员工信息(姓名、职级、工作年限和工资)占一行

示例

输入:

6
张三 3 3 3000
李四 3 4 3000
王五 3 3 4000
赵六 4 3 3000
陆奇 4 4 4000
闫八 4 4 3980.99

输出:

赵六 4 3 3000.00
闫八 4 4 3980.99
陆奇 4 4 4000.00
李四 3 4 3000.00
张三 3 3 3000.00
王五 3 3 4000.00

 

 

java编程,排序对象,三个步骤,创建arraylist,创建比较器,arraylist调用比较方法传入比较器
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class PrintEmployee {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Employee> el = new ArrayList<>();
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {//接收n个员工并保存到AL
Employee e = new Employee();
e.setName(scanner.next());
e.setLevel(scanner.nextInt());
e.setWorkTime(scanner.nextInt());
e.setSalary(scanner.nextInt());
el.add(e);
}
Order(el);//开始排序
}

private static void Order(List<Employee> el) {
Comparator<Employee> lc = Comparator.comparing(Employee::getLevel).reversed();
Comparator<Employee> wc = Comparator.comparing(Employee::getWorkTime).reversed();
Comparator<Employee> sc = Comparator.comparing(Employee::getSalary).reversed();
el.sort(lc.thenComparing(sc).thenComparing(wc));
for (Employee e : el) {
System.out.println(e);
}
}
}


class Employee {
private String name;
private Integer level;
private Integer workTime;
private Integer salary;

public Employee(String name, Integer level, Integer workTime, Integer salary) {
this.name = name;
this.level = level;
this.workTime = workTime;
this.salary = salary;
}

public Employee() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getLevel() {
return level;
}

public void setLevel(Integer level) {
this.level = level;
}

public Integer getWorkTime() {
return workTime;
}

public void setWorkTime(Integer workTime) {
this.workTime = workTime;
}

public Integer getSalary() {
return salary;
}

public void setSalary(Integer salary) {
this.salary = salary;
}

@Override
public String toString() {
return name + " " + level + " " + workTime + " " + salary;
}
}

 

 

注意:
JAVA comparator
在实际开发中,我们经常会遇到需要排序的情况。在正常是用java Sort时需要提供一个comparator,但是有时因为有空指针所以会报错,所以这时我们就需要是用comparator提供的nullLast和nullFirst方法。

Comparator
我们先介绍一下comparator,我们后文称为比较器。比较器实际上是一个实现了comparator interface是一个实例,在Arrays.sort方法我们可以提供这样一个实例,即使被排序的object没有实现comparable接口,我们也可以排序了。构建comparator实例的方法有很多,这里介绍我个人比较喜欢的通过Comparator提供的静态方法来创建实例的方法。我们使用一个类Person举例,Pesron有着3个成员变量,firstName, middleName, lastName,都是String类型。如果我们想要对一个Pesron[] array通过firstName的字符顺序排序,我们可以写成 Arrays.sort(arrays, Comparator.comparing(Person::getFirstName)), 在这里,comparing方法就会返回一个comparator的实例。这里的comparing方法需要一个参数,叫做键提取器,他将类型T映射为一个可以比较的类型(在这里,是String),然后每次比较时就通过映射过来的键来排序。再打个比方,如果我们想通过firstName的长度排序,我们就可以写成Arrays.sort(arrays, Comparator.comparing(x -> x.getFirstName().length())),其中x->x.getFirstName() 等价于 Person::getFirstName, 一个是lambda表达式,一个是方法引用。
不过其实,在上面的俩个例子中都存在着问题,我们都没有考虑到数组中存在null的情况,一旦数组中存在null,这个方法就会报错。所以这时就需要nullLast和nullFirst方法。

nullLast, nullFirst
nullLast需要传递一个comparator实例,每次comparator在比较时,会把null放在排序的最后而不会报错(实际上就是null和其他任何值比较都会返回-1),然后nullLast会返回一个comparator实例。所以上面的代码写成Arrays.sort(arrays, nullsLast(Comparator.comparing(aw -> aw.getFirstName())))就可以了

 

 

 

python方法仅供参考

 

方法一:

n = int(input())
emps = [[emp[0],int(emp[1]),int(emp[2]),float(emp[3])] for emp in
(input().strip().split(" ") for i in range(n))]

emps=sorted(emps,key=lambda x:(x[1],-x[3],x[2]), reverse=True)

for emp in emps:print("{} {} {} {:.2f}".format(*emp))
方法二:

import sys

lines=sys.stdin.readlines()
n=int(lines[0].strip())
emps=[]
for i in range(n):
tmp=lines[i+1].strip().split(" ")
tmp[0]=tmp[0].strip()
tmp[1]=int(tmp[1])
tmp[2]=int(tmp[2])
tmp[3]=-float(tmp[3])
emps.append(tmp)

emps=sorted(emps,key=lambda x:(x[1],x[3],x[2]), reverse=True)

for emp in emps:
emp[-1]=-emp[-1]
print("{} {} {} {:.2f}".format(*emp))
方法三:

n = int(input())
emps = [[emp[0],int(emp[1]),int(emp[2]),float(emp[3])] for emp in
(input().strip().split(" ") for i in range(n))]

#基数排序
result = sorted(emps, key=lambda x: -x[2])
result = sorted(result, key=lambda x: x[3])
emps = sorted(result, key=lambda x: -x[1])

for emp in emps:print("{} {} {} {:.2f}".format(*emp))
方法四:

n = int(input())
emps = [[emp[0],int(emp[1]),int(emp[2]),float(emp[3])] for emp in
(input().strip().split(" ") for i in range(n))]

for i in range(n):
for j in range(n-i-1):
if emps[j+1][1]<emps[j][1]:
continue
elif emps[j+1][1]>emps[j][1]:
emps[j], emps[j+1] = emps[j+1], emps[j]
else:
if float(emps[j+1][3])>float(emps[j][3]):
continue
elif float(emps[j+1][3])<float(emps[j][3]):
emps[j], emps[j+1] = emps[j+1], emps[j]
else:
if int(emps[j+1][2])>int(emps[j][2]):
emps[j], emps[j+1] = emps[j+1], emps[j]
else:
continue

for emp in emps:print("{} {} {} {:.2f}".format(*emp))

 

标签:java,Comparator,int,---,emp,l1,Integer,public,emps
From: https://www.cnblogs.com/GKLBB/p/16705323.html

相关文章