cc959798
V2EX  ›  问与答

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

  •  
  •   cc959798 · Dec 18, 2018 · 4409 views
    This topic created in 2734 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Dec 19, 2018
    java 的语法啰嗦是公认,不管黑不黑都是事实吧

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


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

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

    所以 Map “超级麻烦”?注意标题就是针对 Map 而不是整个的 Java。
    zn
        38
    zn  
       Dec 19, 2018 via iPhone
    @orangeade 可是真的觉得 go 的语法太丑了,不堪入目
    bk201
        39
    bk201  
       Dec 19, 2018
    换成 [] 我还能看源码实现吗?
    SorcererXW
        40
    SorcererXW  
       Dec 19, 2018
    立即使用 kotlin, 没有任何过渡成本
    cc959798
        41
    cc959798  
    OP
       Dec 19, 2018
    @yidinghe 不是黑,java 是有自己的设计原则,配合 ide 可能真不慢,但是太长了,显得啰嗦
    exonuclease
        42
    exonuclease  
       Dec 19, 2018 via iPhone
    @changnet java 没运算符重载
    natforum
        43
    natforum  
       Dec 19, 2018
    我觉得 JavaScript 语法才蛋疼
    cyspy
        44
    cyspy  
       Dec 19, 2018
    java 能赢本来就是因为简单
    tatelucky
        45
    tatelucky  
       Dec 24, 2018
    你要觉得难用你可以不用,我就是觉得你想黑 java 用不着不用以一个 map 在这里黑,黑的人多了,排名还第一,好气哦
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 146ms · UTC 13:53 · PVG 21:53 · LAX 06:53 · JFK 09:53
    ♥ Do have faith in what you're doing.