输出两个字符串数组中的交集

编写方法searchInsect,返回值为交集的集合,其参数为两个字符串集合s1和s2。

方法解释:首先将s1放入map集合中;遍历s2,如果s2中的在map中包含,则值设置为true;最后将map中所有值为true的间保存在list中返回

  这里要注意返回的是数组,所以需要将list集合转换为数组:使用toArray方法,参数为数组类型即可。

代码:

package mianshi_test_01;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

class Test {

	public static void main(String[] args) {
		String[] s1 = { "asz", "1q2", "ccc", "ffr" };
		String[] s2 = { "1q2", "ccc", "pod" };
		String[] result = searchInsect(s1, s2);
		for (String s : result) {
			System.out.println(s);
		}

	}

	private static String[] searchInsect(String[] s1, String[] s2) {
		// TODO Auto-generated method stub
		// 将s1放到map集合中
		Map<String, Boolean> map = new HashMap<String, Boolean>();
		for (String s : s1) {
			if (!map.containsKey(s))
				map.put(s, Boolean.FALSE);
		}
		// 判断s2中的是否在map中,若在就将值设置为false
		for (String s : s2) {
			if (map.containsKey(s))
				map.put(s, Boolean.TRUE);
		}
		// 将所有值为true的即交集放在list中作为返回值
		List<String> list = new LinkedList<String>();
		for (Map.Entry<String, Boolean> entry : map.entrySet()) {
			if (entry.getValue().equals(Boolean.TRUE)) {
				list.add(entry.getKey());
			}
		}
		String[] r = {};
		return list.toArray(r);
	}
}

结果:

发布了233 篇原创文章 · 获赞 20 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_42565135/article/details/103459736