c******f 发帖数: 243 | 1 在学java 8,用Java做不出来...哪里错了
同样的题 majority number..
scala
val num = List(1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,2,3,4,5,6,7)
num.groupBy(x=>x).filter(_._2.size > num.length / 2).map(_._1).foreach(
println)
output:
1
java
List nums = new ArrayList<>();
for (int i = 1; i <= 15; i++) nums.add(1);
for (int i = 1; i <= 3; i++) nums.add(i);
Collection> collect = nums.stream().collect(Collectors
.groupingBy(n -> n)).values();
System.out.println(collect);
Stream.of(collect).filter(l -> l.size() > nums.size() / 2).collect(
Collectors.toList()).forEach(l -> System.out.println(l));
只看到第一个println
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2], [3]]
看不到后面的println | p*****2 发帖数: 21240 | | l******t 发帖数: 55733 | | l******t 发帖数: 55733 | 4 没用过java8但感觉出问题的地方在filter里的比较。你的l和num的scope怎么确定的 | z****e 发帖数: 54598 | 5 用rxjava就好了
filter, map这些都有
【在 p*****2 的大作中提到】 : Java8跟Scala一比,高下立现
| z****e 发帖数: 54598 | 6 这个贴很好滴说明了debug fp有多苦逼了
小手都搞不定啊
【在 l******t 的大作中提到】 : 没用过java8但感觉出问题的地方在filter里的比较。你的l和num的scope怎么确定的
| l******t 发帖数: 55733 | 7 很好的说明了java8不是fp。怀疑这里面哪个函数偷偷动了list的指针了
【在 z****e 的大作中提到】 : 这个贴很好滴说明了debug fp有多苦逼了 : 小手都搞不定啊
| t**r 发帖数: 3428 | | z****e 发帖数: 54598 | 9 没有回答到点子上啊
反正debug就是debug到这么一大坨出了问题
Stream.of(collect).filter(l -> l.size() > nums.size() / 2).collect(
Collectors.toList()).forEach(l -> System.out.println(l));
这里面n步,用fp的写法,ide都帮不了你啊
debug颇为耗时的说
上面scala的写法也是一样的
只不过没出问题,等出了问题的时候
这么一大坨还不如重构
【在 l******t 的大作中提到】 : 很好的说明了java8不是fp。怀疑这里面哪个函数偷偷动了list的指针了
| z****e 发帖数: 54598 | 10 Stream.of(collect)
.filter(l -> l.size() > nums.size() / 2)
.collect(Collectors.toList())
.forEach(l -> System.out.println(l));
写成这样,然后设置断点,用ide一个个看过去
看哪一步出了问题 | | | c******f 发帖数: 243 | 11 这也太怪了吧...
Stream.of(collect).forEach(l-> System.out.println(l + " " + nums.size()));
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2], [3]] 18
我还以为是
[1,1,....1] 18
[2]
[3]
原来这样才对,要看API才行, 还是不太喜欢java 8
Collection> collect = nums.stream().collect(Collectors
.groupingBy(n -> n)).values();
collect.parallelStream().filter(l->l.size() > nums.size() / 2).
collect(Collectors.toList()).forEach(l -> System.out.println(l)); | z****e 发帖数: 54598 | 12 api另说
你用的debug方式太原始了
是println
工作中这样搞搞到什么时候去
建议用ide啊
直接看内存变量的val,而不是println出来
Collectors
【在 c******f 的大作中提到】 : 这也太怪了吧... : Stream.of(collect).forEach(l-> System.out.println(l + " " + nums.size())); : [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2], [3]] 18 : 我还以为是 : [1,1,....1] 18 : [2] : [3] : 原来这样才对,要看API才行, 还是不太喜欢java 8 : Collection> collect = nums.stream().collect(Collectors : .groupingBy(n -> n)).values();
| c******f 发帖数: 243 | 13 java 8 ide debug不了啊,filter()之后collect变量的还是一样的.... | l******t 发帖数: 55733 | 14 重构很对。fp也可以写的简单易懂好调试
【在 z****e 的大作中提到】 : 没有回答到点子上啊 : 反正debug就是debug到这么一大坨出了问题 : Stream.of(collect).filter(l -> l.size() > nums.size() / 2).collect( : Collectors.toList()).forEach(l -> System.out.println(l)); : 这里面n步,用fp的写法,ide都帮不了你啊 : debug颇为耗时的说 : 上面scala的写法也是一样的 : 只不过没出问题,等出了问题的时候 : 这么一大坨还不如重构
| z****e 发帖数: 54598 | 15 会产生一个local variable
用上inspect功能应该可以看到
选中,然后右键点击打开列表,看看有没有inspect
然后试试看
【在 c******f 的大作中提到】 : java 8 ide debug不了啊,filter()之后collect变量的还是一样的....
| z****e 发帖数: 54598 | 16 你塞进去足够多的中间状态就可以很好调试了
【在 l******t 的大作中提到】 : 重构很对。fp也可以写的简单易懂好调试
| p*****2 发帖数: 21240 | 17
collect.stream()
.filter(l -> l.size() > nums.size()/2)
【在 c******f 的大作中提到】 : 在学java 8,用Java做不出来...哪里错了 : 同样的题 majority number.. : scala : val num = List(1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,2,3,4,5,6,7) : num.groupBy(x=>x).filter(_._2.size > num.length / 2).map(_._1).foreach( : println) : output: : 1 : java : List nums = new ArrayList<>();
| d****i 发帖数: 4809 | 18 这个例子充分说明了java8引入所谓的fp是多么的扯蛋,还是不要搞什么8了,老老实实
用java6就已经可以简单快速高效的解决你这个问题了。
【在 c******f 的大作中提到】 : 在学java 8,用Java做不出来...哪里错了 : 同样的题 majority number.. : scala : val num = List(1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,2,3,4,5,6,7) : num.groupBy(x=>x).filter(_._2.size > num.length / 2).map(_._1).foreach( : println) : output: : 1 : java : List nums = new ArrayList<>();
| p*****2 发帖数: 21240 | 19 java8 引入的不好 scala要好用多了
【在 d****i 的大作中提到】 : 这个例子充分说明了java8引入所谓的fp是多么的扯蛋,还是不要搞什么8了,老老实实 : 用java6就已经可以简单快速高效的解决你这个问题了。
| n*w 发帖数: 3393 | 20 比较下c# version。
var num = new List {1,1,1,1,1,1.....}
num.GroupBy(x=>x).Where(x => x.Count() > num.Count()/2).Select(x=>x.Key);
【在 c******f 的大作中提到】 : 在学java 8,用Java做不出来...哪里错了 : 同样的题 majority number.. : scala : val num = List(1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,2,3,4,5,6,7) : num.groupBy(x=>x).filter(_._2.size > num.length / 2).map(_._1).foreach( : println) : output: : 1 : java : List nums = new ArrayList<>();
| | | n*w 发帖数: 3393 | 21 f#:
let num = [1;1;1;1;1;1;......]
num
|> Seq.groupBy (fun x->x)
|> Seq.filter (fun x-> (Seq.length (snd x))>(Seq.length num)/2)
|> printfn "%A"
【在 n*w 的大作中提到】 : 比较下c# version。 : var num = new List {1,1,1,1,1,1.....} : num.GroupBy(x=>x).Where(x => x.Count() > num.Count()/2).Select(x=>x.Key);
| b**l 发帖数: 25 | 22 This will work:
List nums = new ArrayList<>();
for (int i = 1; i <= 15; i++) {
nums.add(1);
}
for (int i = 1; i <= 3; i++) {
nums.add(i);
}
Collection> collect = nums.stream().collect(Collectors
.groupingBy(n -> n)).values();
System.out.println(collect);
collect.stream().filter(l -> l.size() > nums.size() / 2)
.flatMap(Collection::stream).distinct()
.forEach(System.out::println);
The problem is you are using Stream.of(collect) instead of collect.stream(),
please check JavaDoc, you are actually calling
public static Stream of(T t); | n*w 发帖数: 3393 | 23 linq query expression:
var num = new List{1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,2,3,4,5,6,7};
var r = from n in num
group n by n into g
where g.Count() > num.Count() /2
select g.Key;
【在 n*w 的大作中提到】 : 比较下c# version。 : var num = new List {1,1,1,1,1,1.....} : num.GroupBy(x=>x).Where(x => x.Count() > num.Count()/2).Select(x=>x.Key);
| z****e 发帖数: 54598 | 24 re这个
返回值其实不是一个collection,而是Stream
所以各种针对collection的操作就失效了
Collectors
【在 b**l 的大作中提到】 : This will work: : List nums = new ArrayList<>(); : for (int i = 1; i <= 15; i++) { : nums.add(1); : } : for (int i = 1; i <= 3; i++) { : nums.add(i); : } : Collection> collect = nums.stream().collect(Collectors : .groupingBy(n -> n)).values();
| c******f 发帖数: 243 | 25 不学java8不行啊..组里的packages要migrate java8了...
组里不少ruby, scala fan boys | t***t 发帖数: 6066 | 26 其实dart挺好。可惜生不逢时,连狗都抛弃它了。
语言方面,dart设计得挺好。 | p*****2 发帖数: 21240 | 27 被抛弃了?
zhaoce不是用的很爽吗
【在 t***t 的大作中提到】 : 其实dart挺好。可惜生不逢时,连狗都抛弃它了。 : 语言方面,dart设计得挺好。
| k****i 发帖数: 101 | 28 -- hs aholic
findM lst =
(filter ((> len) . (* 2) . length))
. (groupBy (on (==) snd))
. (sortBy (on compare snd))
$ (zip [0 .. len - 1] lst)
where len = length lst
findM "aha" -- [[(0,'a'),(2,'a')]] | z****e 发帖数: 54598 | 29 他在l家,又不是g家
而且dart在斯堪的纳维亚那边做
美国的g家人怎么可能知道那边的情况
还不如说说他们l家怎么抛弃node和sala的
【在 p*****2 的大作中提到】 : 被抛弃了? : zhaoce不是用的很爽吗
| t***t 发帖数: 6066 | 30 dart team被chrome组抛弃,加入android组未遂,被迫加入ads组,不是很说明问题吗
?现在就靠ads组吊着一口气。
【在 p*****2 的大作中提到】 : 被抛弃了? : zhaoce不是用的很爽吗
| | | N********n 发帖数: 8363 | 31
dart理念不错,但是钩子办事经常半途而废所以不靠谱。
【在 t***t 的大作中提到】 : dart team被chrome组抛弃,加入android组未遂,被迫加入ads组,不是很说明问题吗 : ?现在就靠ads组吊着一口气。
| z****e 发帖数: 54598 | 32 你对欧洲的事情知道的这么清楚?dart主要是欧洲人在做,估计跟v8是一个组
跟美国人没啥关系,其他两个应该都是加州做的
chrome的组应该是阿三的组,赶走鲁宾的就是chrome那个组
鲁宾做的android又不缺少虚拟机,当然不会要v8这种引擎
不过也不是没有,dart最近搞了个android上的版本出来,感觉怪怪的
话说ads难道不是google的王牌组?没有ads,google股价至少掉一半
我说最近怎么adsense弄了个什么异步的出来,如果ads用dart,那就真发达了
ads远比什么chrome,android要重要得多,对于google来说
【在 t***t 的大作中提到】 : dart team被chrome组抛弃,加入android组未遂,被迫加入ads组,不是很说明问题吗 : ?现在就靠ads组吊着一口气。
| t***t 发帖数: 6066 | 33 dart加入ads组不怪怪的么?本来被chrome抛弃后要加入android组的,不知咋又失败只
好加入ads组。ads组接受唯一原因是ads已经用dart开发一两年了,没法从头再来,完
全也是被迫的。
【在 z****e 的大作中提到】 : 你对欧洲的事情知道的这么清楚?dart主要是欧洲人在做,估计跟v8是一个组 : 跟美国人没啥关系,其他两个应该都是加州做的 : chrome的组应该是阿三的组,赶走鲁宾的就是chrome那个组 : 鲁宾做的android又不缺少虚拟机,当然不会要v8这种引擎 : 不过也不是没有,dart最近搞了个android上的版本出来,感觉怪怪的 : 话说ads难道不是google的王牌组?没有ads,google股价至少掉一半 : 我说最近怎么adsense弄了个什么异步的出来,如果ads用dart,那就真发达了 : ads远比什么chrome,android要重要得多,对于google来说
| z****e 发帖数: 54598 | 34 加入android组做啥涅?
android有java了,不管什么语言凑过去都感觉怪怪的
ads都用dart开发了呀?dart真牛,这么重要的东西都交给它去做了
【在 t***t 的大作中提到】 : dart加入ads组不怪怪的么?本来被chrome抛弃后要加入android组的,不知咋又失败只 : 好加入ads组。ads组接受唯一原因是ads已经用dart开发一两年了,没法从头再来,完 : 全也是被迫的。
| k****i 发帖数: 101 | 35 -- hs solution to original problem of finding majority
-- inherent lazy-eval
-- with comparable complexity to imperative counterparts
findM2 lst =
let
f [] = Nothing
f (x : xs) =
if length x * 2 > len
then Just . head $ x
else f xs
where len = length lst
in
f . group $ lst
findM2 "oop" -- Just 'o' |
|