JAVA要怎样实现?

qq_28484955 2019-10-30 09:22:49
public class Main { public static void main(String[] args) { ArrayList<String> a = new ArrayList<String>(); ArrayList<String> b = new ArrayList<String>(); ArrayList<String> c = new ArrayList<String>(); a.add("1,2,3,4,5,6,7"); a.add("1,3,9,4,5,6,8"); a.add("1,3,4,5,6,7,8"); a.add("1,2,3,4,7,8,9"); a.add("1,7,3,8,7,8,10"); a.add("1,2,3,4,6,7,8"); a.add("1,2,3,4,5,6,7"); a.add("11,12,13,14,15,16,17"); b.add("1,2"); b.add("5,6"); for (int i = 1; i < a.size(); i = i + 1) { List l2 = new ArrayList<String>(); List l1 = new ArrayList<String>(); // 先将类似于"1,2,3,4,5,6,7"的字符串切割为["1","2",……]数组 String[] l1Sp = a.get(i - 1).split(","); // 将数组转换为list List l1List = Arrays.asList(l1Sp); // 全部添加给l1 l1.addAll(l1List); // l2同理 String[] l2Sp = a.get(i).split(","); l2.addAll(Arrays.asList(l2Sp)); // 打点,取交集 l1.retainAll(l2); c.add(l1.toString()); } for (String s1 : b) { List list1 = new ArrayList<String>(Arrays.asList(s1.split(","))); int cnt = 0; int cnt2=0; for (String s2 : c) { List list2 = new ArrayList<String>(Arrays.asList(s2.split(" ,"))); if (list2.containsAll(list1)) { cnt = 0; } else { cnt ++; if (cnt > cnt2) { cnt2 = cnt; } } } System.out.println(cnt); System.out.println(cnt2); } } } 怎么最后的cnt结果会是7呢? 我要实现的是a集合逐条取交集,得出的结果保存到c集合中!再用c集合逐条跟b集合比较,包含b集合则cnt归零,不包含则加1。结果不应该是7的!cnt2是保存最大值!
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 qq_28484955 的回复:
[quote=引用 3 楼 人生呐的回复:]论坛首页->我的论坛->我发布的帖子->查看->结贴给分
我是手机APP,找了一圈找不到![/quote] 哈哈哈哈,手机不能结贴的,要电脑才行
qq_28484955 2019-11-01
  • 打赏
  • 举报
回复
引用 3 楼 人生呐的回复:
论坛首页->我的论坛->我发布的帖子->查看->结贴给分
我是手机APP,找了一圈找不到!
  • 打赏
  • 举报
回复
论坛首页->我的论坛->我发布的帖子->查看->结贴给分
qq_28484955 2019-10-31
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
把List list2 = new ArrayList<String>(Arrays.asList(s2.split(" ,")));这一行改成
List list2 = new ArrayList<String>(Arrays.asList(s2.substring(1, s2.length()-1).split(", ")));

原因
c.add(l1.toString());集合的toString方法,首尾会带[],数据用逗号+空格分开,你是忽略的首尾,并且是按空格+逗号来分割字符串的,一来是不能分割字符串,二来就是分割了,首尾两个数组因为带有[],也不能准确匹配你的数字
谢谢!我刚学JAVA!好多东西不知道!请问这个分怎么给你?
qybao 2019-10-31
  • 打赏
  • 举报
回复
把List list2 = new ArrayList<String>(Arrays.asList(s2.split(" ,")));这一行改成
List list2 = new ArrayList<String>(Arrays.asList(s2.substring(1, s2.length()-1).split(", ")));

原因
c.add(l1.toString());集合的toString方法,首尾会带[],数据用逗号+空格分开,你是忽略的首尾,并且是按空格+逗号来分割字符串的,一来是不能分割字符串,二来就是分割了,首尾两个数组因为带有[],也不能准确匹配你的数字
wowpH 2019-10-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_28484955 的回复:
[quote=引用 1 楼 qybao的回复:]把List list2 = new ArrayList<String>(Arrays.asList(s2.split(" ,")));这一行改成 List list2 = new ArrayList<String>(Arrays.asList(s2.substring(1, s2.length()-1).split(", "))); 原因 c.add(l1.toString());集合的toString方法,首尾会带[],数据用逗号+空格分开,你是忽略的首尾,并且是按空格+逗号来分割字符串的,一来是不能分割字符串,二来就是分割了,首尾两个数组因为带有[],也不能准确匹配你的数字
谢谢!我刚学JAVA!好多东西不知道!请问这个分怎么给你?[/quote]教你结贴给分。CSDN论坛新手指南

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧