首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cc959798
V2EX  ›  问与答

我去,实验了一下 Java 发现 map 超级麻烦

  •  
  •   cc959798 · 2018-12-18 23:33:12 +08:00 · 3001 次点击
    这是一个创建于 404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哈希表是我们常见的一种数据结构,在 java 中实现的有些太难用了,不支持[]索引,使用起来好繁琐

    第 1 条附言  ·  2018-12-19 11:01:29 +08:00
    java 的语法啰嗦是公认,不管黑不黑都是事实吧

    最重要的提能力和水平什么鬼,被资本家剥削都病态了吧,一个语言语法的问题和一个个体什么关系,我水平高了 java 语法就简洁了?就这逻辑水平也一般般吧
    45 回复  |  直到 2018-12-24 17:34:26 +08:00
    watzds
        1
    watzds   2018-12-19 00:16:39 +08:00 via Android
    写代码又不是拼打字速度快,.get()能阻碍你什么?
    whwq2012
        2
    whwq2012   2018-12-19 00:30:23 +08:00 via Android
    用方法实现才更有面向对象的感觉吧
    Lonely
        3
    Lonely   2018-12-19 00:30:43 +08:00   ♥ 4
    像你这么矫情的低级黑真是头次见
    changnet
        4
    changnet   2018-12-19 00:34:58 +08:00 via Android
    不懂 java,不能像 C++一样写个 operator []就有了么
    lhx2008
        5
    lhx2008   2018-12-19 00:44:51 +08:00 via Android   ♥ 1
    java 啥都特别麻烦,建议楼主使用最好的语言 php,和最好的两种语言 python,他们的 map 的 key 还可以支持多类型,还可以用[]优雅的调用。像 java 的 key 和 value 都只能固定类型,垃圾!
    NeinChn
        6
    NeinChn   2018-12-19 00:47:55 +08:00   ♥ 4
    Map 有最普通的 HashMap,还有有序的 TreeMap,有线程安全的 ConcurrentHashMap,还有基于双向链表做的 LinkedHashMap,可以用来做 LRU...
    基本上最基础的需求都能用内置库来满足...
    你找个其他语言看看有没有能这么全的....
    哦不对,Python 根本没有线程安全的问题....GIL 最棒了.....
    sagaxu
        7
    sagaxu   2018-12-19 01:01:50 +08:00 via Android
    JVM 上又不是只有 Java,你还有很多选择,Kotlin,Scala,Groovy 的 map 都不需要写.get()
    qiyuey
        8
    qiyuey   2018-12-19 01:03:45 +08:00 via Android
    人生苦短,欢迎使用 Kotlin
    kera0a
        9
    kera0a   2018-12-19 01:04:58 +08:00 via iPhone   ♥ 1
    其他语言怎样关 java 的 map 啥事,阴阳怪气的。这个用起来稍微麻烦就稍微麻烦一点呗,java 也没有必要在这个方面争个第一
    eslizn
        10
    eslizn   2018-12-19 01:15:34 +08:00
    @changnet 貌似 java 不支持运算符重载,几个主流语言的语言也就 c++的运算符重载支持的好一点
    lance7in
        11
    lance7in   2018-12-19 01:19:22 +08:00
    你需要 guava
    JRight
        12
    JRight   2018-12-19 01:54:40 +08:00
    语言特性都是随着应用场景和人的需求演化的,可能以后的某天你会觉得非常有用
    Trim21
        13
    Trim21   2018-12-19 02:12:48 +08:00
    @NeinChn #5 即使有 GIL, 也不代表没有线程安全的问题, 是不是觉得黑点更大了
    lraining
        14
    lraining   2018-12-19 05:13:29 +08:00 via Android
    js 的 map 也难用,不能[]索引,要用 get,set,遍历要写[key,value]
    jiangnanyanyu
        15
    jiangnanyanyu   2018-12-19 07:27:01 +08:00 via Android
    又来水一贴,有什么意义
    yanaraika
        16
    yanaraika   2018-12-19 07:41:49 +08:00   ♥ 4
    为啥还有人觉得.get 就好……这个不是 java 著名又臭又长的点吗


    推荐 kotlin
    dengtongcai
        17
    dengtongcai   2018-12-19 08:24:03 +08:00 via iPhone
    确实有这地方过于麻烦,但是…
    66beta
        18
    66beta   2018-12-19 08:51:25 +08:00 via Android
    不懂 Java,但是看到 Java9 - 10 越来越靠近 PHP 和 Python 了,说不定 Java11 就能满足楼主了
    xomix
        19
    xomix   2018-12-19 09:01:36 +08:00
    @66beta 那不行,那会儿要收费了
    liuxey
        20
    liuxey   2018-12-19 09:13:34 +08:00
    如果一个.get()就能称为超级麻烦,那么楼主继续用 Java 可能会引起不适,赶紧收手。
    cc959798
        21
    cc959798   2018-12-19 09:17:18 +08:00
    @changnet 没有重载
    cc959798
        22
    cc959798   2018-12-19 09:17:36 +08:00
    @66beta 11 已经发布了
    BingoXuan
        23
    BingoXuan   2018-12-19 09:25:03 +08:00
    @NeinChn
    我记得 GIL 并不保证线程安全吧。只是一般的字典的操作具备原子性而已,比如获取键和修改值。
    xlui
        24
    xlui   2018-12-19 09:25:15 +08:00 via iPhone
    @66beta 我用了,不能 :)
    tatelucky
        25
    tatelucky   2018-12-19 09:33:50 +08:00
    麻烦是因为你能力不够
    lniwn
        26
    lniwn   2018-12-19 09:36:10 +08:00 via iPhone
    @NeinChn 线程安全并不是只存在于并行环境中,并发环境同样有线程安全问题,GIL 并不影响 python 线程安全编程需要填的坑。
    sonyxperia
        27
    sonyxperia   2018-12-19 09:40:02 +08:00
    Java 真是人人都能黑上一点
    Vegetable
        28
    Vegetable   2018-12-19 09:41:28 +08:00
    @yanaraika 可能不是觉得好用,就是那种自己可以骂自己学校,别人不能说一句不好的感觉.
    x7395759
        29
    x7395759   2018-12-19 10:18:09 +08:00
    只有两种计算机语言:一种是人们不停抱怨的语言,另一种是没人用的语言。

    -- C++ 之父 Bjarne Stroustrup
    orangeade
        30
    orangeade   2018-12-19 10:26:22 +08:00 via Android
    所以用 golang 吧,性能没差多少,也没有 Java 那么多又臭又长的写法
    cc959798
        31
    cc959798   2018-12-19 10:33:29 +08:00
    @tatelucky 动不动就说别人能力不够这是中国程序员的特色吧,张口就你技术差,能力差,有程序员的地方就有这种声音
    cc959798
        32
    cc959798   2018-12-19 10:34:36 +08:00
    @orangeade golang 一般般吧,现在在用,后端还是可以的,但是项目做大了也是很多问题存在
    xuhaoyangx
        33
    xuhaoyangx   2018-12-19 11:15:03 +08:00
    这都能黑。Java 带的这么多 map,就被一个使用麻烦给黑透了?
    cc959798
        34
    cc959798   2018-12-19 11:26:15 +08:00
    @xuhaoyangx 这个可能习惯就好
    sabel
        35
    sabel   2018-12-19 11:32:13 +08:00
    PHP 是世界上最好的语言,vim 最好用!黑也要找点高级点的东西,比说 JVM 源码层面来黑吧
    Cbdy
        36
    Cbdy   2018-12-19 12:11:43 +08:00
    Java 设计的时候砍掉了 C++的操作符重载,只在内部重载了一些常用的操作符,带来的后遗症就是啰嗦
    yidinghe
        37
    yidinghe   2018-12-19 12:22:13 +08:00
    map.get("key") vs map["key"]
    多了四个字符。

    所以 Map “超级麻烦”?注意标题就是针对 Map 而不是整个的 Java。
    zn
        38
    zn   2018-12-19 12:35:16 +08:00 via iPhone
    @orangeade 可是真的觉得 go 的语法太丑了,不堪入目
    bk201
        39
    bk201   2018-12-19 12:55:20 +08:00
    换成 [] 我还能看源码实现吗?
    SorcererXW
        40
    SorcererXW   2018-12-19 13:01:35 +08:00
    立即使用 kotlin, 没有任何过渡成本
    cc959798
        41
    cc959798   2018-12-19 13:38:45 +08:00
    @yidinghe 不是黑,java 是有自己的设计原则,配合 ide 可能真不慢,但是太长了,显得啰嗦
    exonuclease
        42
    exonuclease   2018-12-19 16:21:43 +08:00 via iPhone
    @changnet java 没运算符重载
    natforum
        43
    natforum   2018-12-19 16:22:30 +08:00
    我觉得 JavaScript 语法才蛋疼
    cyspy
        44
    cyspy   2018-12-19 16:29:16 +08:00
    java 能赢本来就是因为简单
    tatelucky
        45
    tatelucky   2018-12-24 17:34:26 +08:00
    你要觉得难用你可以不用,我就是觉得你想黑 java 用不着不用以一个 map 在这里黑,黑的人多了,排名还第一,好气哦
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1808 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.