面试题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]。
题目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注释中),实现相同托盘及相同商品的合并。
注意:合并后的托盘顺序不重要,商品顺序不重要,保证商品种类、数量正确即可。
请补充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; } }
相关文章推荐
- 一个关于if else容易迷惑的问题
- 一道sql面试题附答案
- C# 超高面试题收集整理
- 14 个折磨人的 JavaScript 面试题
- 人人网javascript面试题 可以提前实现下
- JS面试题---关于算法台阶的问题
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- 经典的20道AJAX面试题(必知必会)
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- 10个经典的Java main方法面试题
- 小米公司JavaScript面试题
- JavaScript面试题大全(推荐)
- 超级全面的PHP面试题整理集合第1/2页
- JS搜狐面试题分析
- 极易被忽视的javascript面试题七问七答
- 10个值得深思的PHP面试题
- 5个实用的shell脚本面试题和答案
- PHP经典面试题集锦