欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA 面试题(七)

程序员文章站 2022-03-02 22:13:56
...

JAVA 面试题(七)

JAVA 面试题
JAVA 面试题(二)
JAVA 面试题(三)
JAVA 面试题(四)
JAVA 面试题(五)
JAVA 面试题(六)
Java-面试-逻辑题
Java-面试-逻辑题(二)


在list查找str是否存在,存在返回true,不存在返回false

代码实现

public static boolean find(List<String> list, String str) {
		// TODO 在这里实现:在list查找str是否存在,存在返回true,不存在返回false
		boolean flag = false;
		if (list.indexOf(str) != -1) {
			flag = true;
		}
		return flag;
	}

测试

	public static void main(String[] args) {
		List<String> list1 = new ArrayList<String>();
		list1.add("苹果手机");
		list1.add("华为手机");
		list1.add("电脑");
		list1.add("苹果");

		boolean sure = find(list1, "苹果");
		System.out.println("sure:" + sure);
	}

输出结果
JAVA 面试题(七)

返回集合差异部分 比较两个集合,把差异部分返回

代码实现

public static List<String> differenceList(List<String> list1, List<String> list2) {
		// TODO 在这里实现代码:返回两个集合差异部分
		Map<String, Integer> map = new HashMap<String, Integer>(list2.size());
		// 将差异部分存储在differentList
		List<String> differentList = new ArrayList<String>();

		for (String list2s : list2) {
			map.put(list2s, 1);
		}

		for (String list1s : list1) {
			if (map.get(list1s) == null) {
				differentList.add(list1s);
			}
		}
		return differentList;
	}

测试

public static void main(String[] args) {
		List<String> list1 = new ArrayList<String>();
		list1.add("苹果手机");
		list1.add("华为手机");
		list1.add("电脑");
		list1.add("苹果");
		list1.add("手表");

		List<String> list2 = new ArrayList<String>();
		list2.add("苹果手机");
		list2.add("华为手机");
		list2.add("电脑");
		list2.add("苹果");
		
		System.out.println("=================");
		List<String> list = differenceList(list1,list2);
		show(list);
		System.out.println("=================");
	}

输出结果
JAVA 面试题(七)

返回集合相同部分 比较两个集合,返回相同部分

代码实现

public static List<String> equalList(List<String> list1, List<String> list2) {
		// TODO 在这里实现代码:返回两个集合差异部分
		Map<String, Integer> map = new HashMap<String, Integer>(list2.size());
		// 将差异部分存储在differentList
		List<String> equalList = new ArrayList<String>();

		for (String list2s : list2) {
			map.put(list2s, 1);
		}

		for (String list1s : list1) {
			if (map.get(list1s) != null) {
				equalList.add(list1s);
			}
		}
		return equalList;
	}

测试

public static void main(String[] args) {
		List<String> list1 = new ArrayList<String>();
		list1.add("苹果手机");
		list1.add("华为手机");
		list1.add("电脑");
		list1.add("苹果");
		list1.add("手表");

		List<String> list2 = new ArrayList<String>();
		list2.add("苹果手机");
		list2.add("华为手机");
		list2.add("电脑");
		list2.add("苹果");

		System.out.println("=================");
		List<String> equalList = equalList(list1, list2);
		show(equalList);
		System.out.println("=================");
	}

输出结果
JAVA 面试题(七)

按clothingid进行合并 nums,sums相加 返回合并后的集合

public class BillsNums {

	private String clothingid;
	private String name;
	private int nums;
	private double sums;

	public BillsNums() {

	}

	public BillsNums(String clothingid, String name, int nums, double sums) {
		this.clothingid = clothingid;
		this.name = name;
		this.nums = nums;
		this.sums = sums;
	}

	/**
	 * 商品编号
	 * 
	 * @return
	 */
	public String getClothingid() {
		return clothingid;
	}

	/**
	 * 商品编号
	 * 
	 * @return
	 */
	public void setClothingid(String clothingid) {
		this.clothingid = clothingid;
	}

	/**
	 * 名称
	 * 
	 * @return
	 */
	public String getName() {
		return name;
	}

	/**
	 * 名称
	 * 
	 * @param name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * 数量
	 * 
	 * @return
	 */
	public int getNums() {
		return nums;
	}

	/**
	 * 数量
	 * 
	 * @param nums
	 */
	public void setNums(int nums) {
		this.nums = nums;
	}

	/**
	 * 金额
	 * 
	 * @return
	 */
	public double getSums() {
		return sums;
	}

	public void setSums(double sums) {
		this.sums = sums;
	}

}

代码实现

public static List<BillsNums> merge(List<BillsNums> list) {
		// TODO 在这里实现代码:将 list 中 clothingid 相等的对象进行合并,name任意取,nums相加;sums相加
		List<BillsNums> result = list.stream()
				// 表示id为key, 接着如果有重复的,那么从BillsNums对象o1与o2中筛选出一个,这里选择o1,
				// 并把id重复,需要将nums和sums与o1进行合并的o2, 赋值给o1,最后返回o1
				.collect(Collectors.toMap(BillsNums::getClothingid, a -> a, (o1, o2) -> {
					o1.setNums(o1.getNums() + o2.getNums());
					o1.setSums(o1.getSums() + o2.getSums());
					return o1;
				})).values().stream().collect(Collectors.toList());
		return result;

	}

测试

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.alibaba.fastjson.JSON;

public static void main(String[] args) {

		List<BillsNums> list1 = new ArrayList<BillsNums>();

		BillsNums nums = new BillsNums();
		nums.setClothingid("1001");
		nums.setName("苹果");
		nums.setNums(2);
		nums.setSums(100);
		list1.add(nums);

		BillsNums nums1 = new BillsNums();
		nums1.setClothingid("1001");
		nums1.setName("苹果");
		nums1.setNums(3);
		nums1.setSums(100);
		list1.add(nums1);

		List<BillsNums> list2 = merge(list1);
        System.out.println("list1:"+JSON.toJSONString(list2,true));
	}

输出结果
JAVA 面试题(七)