您的位置:首页 > 职场人生

面试题3

2017-02-10 21:29 603 查看
题目1:筛选奇数

请补充OddNumber类中的transform代码(在TODO注释中)。要求删除list中的偶数,仅保留奇数。

例如,原始数据为list = [1, 2, 3, 4, 5, 6],

调用transform(list);后,list变为[1, 3, 5]。

package test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class OddNumber {
private static final int MAX_COUNT = 10;
public static void main(String[] args) {
List<Integer> numbers = genNumbers();
printNumbers("原始数据", numbers);
transform(numbers);
printNumbers("处理结果", numbers);
}
private static void printNumbers(String title, List<Integer> numbers) {
System.out.println(title);
for(Integer num : numbers) {
System.out.print(num + ", ");
}
System.out.println();
}
private static List<Integer> genNumbers() {
List<Integer> list = new ArrayList<>();
Random rnd = new Random();
for(int i = 0; i < MAX_COUNT; ++i)
list.add(rnd.nextInt(100));
return list;
}
private static void transform(List<Integer> list) {
//TODO 请补充代码
ArrayList<Integer> list2=new ArrayList<Integer>();
for(int i=0;i<list.size();i++){
if(list.get(i)%2!=0){
list2.add(list.get(i));
}
}
for (int i = 0; i < list2.size(); i++) {
list.set(i, list2.get(i));
}
while (list.size()!=list2.size()) {
list.remove(list.size()-1);
}
}
}


题目2:合并托盘

现已定义好托盘(class Tray)、商品(Goods)的结构,其中一个托盘可以包含1个或多个商品,商品由ID、数量组成。

请将相同的托盘(托盘ID相等),同一个托盘内,请将相同的商品合并(商品ID相等时,数量相加)。

例如现有结构

Tray_0: (Goods_1, 2), (Goods_2, 1),

Tray_1: (Goods_2, 2),

Tray_0: (Goods_1, 1), (Goods_3, 1),

调用result = mergeTrays(trays);方法后,合并后的结果放入result对象,结果应当为

Tray_0: (Goods_1, 3), (Goods_2, 1), (Goods_3, 1),

Tray_1: (Goods_2, 2),

请补充MergeTrays类中的mergeTrays方法(在TODO注释中),实现相同托盘及相同商品的合并。

注意:合并后的托盘顺序不重要,商品顺序不重要,保证商品种类、数量正确即可。

package test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MergeTrays {

static class Tray {
int id;
List<Goods> goods;
}
static class Goods {
int id;
int count;
}
private static final int MAX_TRAYS = 10;
private static final int MAX_TRAY_ID = 6;
private static final int MAX_GOODS = 3;
private static final int MAX_GOODS_ID = 10;
private static final int MAX_GOODS_COUNT = 3;

public static void main(String[] args) {
List<Tray> trays = genTrays();
printTrays("原始数据", trays);
List<Tray> result = mergeTrays(trays);
printTrays("处理结果", result);
}
private static List<Tray> genTrays() {
List<Tray> trays = new ArrayList<>();
for(int i = 0; i < MAX_TRAYS; ++i) {
Tray tray = genTray();
trays.add(tray);
}
return trays;
}
private static Random rnd = new Random();
private static Tray genTray() {
Tray tray = new Tray();
tray.id = rnd.nextInt(MAX_TRAY_ID);
tray.goods = genGoods();
return tray;
}
private static List<Goods> genGoods() {
List<Goods> result = new ArrayList<>();
int goodsSize = rnd.nextInt(MAX_GOODS) + 1;
for(int i = 0; i < goodsSize; ++i) {
Goods g = new Goods();
g.id = rnd.nextInt(MAX_GOODS_ID);
g.count = rnd.nextInt(MAX_GOODS_COUNT) + 1;
result.add(g);
}
return result;
}
private static void printTrays(String title, List<Tray> list) {
System.out.println(title);
for(Tray t : list) {
if(t == null)
continue;
System.out.print("\tTray_" + t.id + ": ");
if(t.goods != null) {
for(Goods g : t.goods) {
if(g == null)
continue;
System.out.print("(Goods_" + g.id + ", " + g.count + "), ");
}
}
System.out.println();
}
System.out.println();
}
private static List<Tray> mergeTrays(List<Tray> list) {
//TODO 请补充代码
return list;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题