问答

TreeSet的add和contains方法执行的迷惑行为, 已附上代码, 求助.

作者:admin 2021-04-20 我要评论

代码如下, 执行结果应该怎么解释呀? 程序很简单, 麻烦帮忙看下, 谢谢! import java.util.Collections;import java.util.Iterator;import java.util.Set;import j...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

代码如下, 执行结果应该怎么解释呀? 程序很简单, 麻烦帮忙看下, 谢谢!

import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class TreeSetTest {

    public static void main(String[] args){
        String str = "MRbFCZFnmfPJhlFYoln,tmxPBkCLeKwZcCoTAzh,LUWqMHg,qfrBJPxTjF,QKEgYnNuSjpwHihgcK,VufRnSSkuGE,tuSGJwjjRQ,juzUTdIOergNYclAkDU,MBOZAcIi,OQljsZfLrsjAmVhxw,OLIndeoVAQ,dUNhBLThXeUgJnG,spcuXoePSj,xrNZArc,xqIkXvYStBUkg,WUMwGLYggBic,IeOIFbMZVAyupAkygT,EUZAAAlVNhyzNUWZXvH,XBKFPN,XUAlVq,znEhBCvvCmYSIhAVJSp,PNPuDXsozP,VhvYQhygALyfp,mEkzmHUgSmsfqlyhQARw,CVDEmjIWbDR,hwPucmOANsNX,OZMcBxPPhl,YyUNDtAg,xrAPnDlA,ElGyJqyPwf,lZElDM,fpwKhGfXHZdV,PlqEgPXANqijZcAIDsJz,FATeTVcJoiCdcR,TAUQkeLkSOV,LhDELDpN,xnqcFyNCgPnIplm,JOmTwjYMNuMhjDK,HePrRXfgDkvOkBjX,MMXGnRpsqEOSOSKGWZcH,REqdLqAORhtIiPEmkIb,oClzNLrMGdjuMqr,eEpVJqHnGWVMSkVh,pgKkjfRQj,gQLLpdFXeEeMwc,stOPPTsvjUOgy,SoletVJ,UnDtuEWOZmoy,kkXnwzyLhQWVfXcLxom,cRTAOvrEunD,WyXANBzHsAc,A,J,N,O,R,T,e,g,Nn,Ny,bA,tN,st,DYG,Eng,Yri,psG,IVkO,ODOc,eLEj,gNBX,mqOn,rmgA,BGeqP,TosXr,pHXUc,ptyEu,uPMxE,wMRlE,wlbZt,AxizjBAFvD,Jvfgcps,fBGmwglnEIrUIKFWgptN,bRKSqPBvx,JwGzVGIr,xNZnSACYEEbD,IxkCseXT,NGIhHWKxWS,cEHizFzmUq,YPNzAPZR,luGLTsFCkVBjA,nZgVTWyNQNQUUdfsxZA,rQsSmhJzxA,EnOOSugzONKXxkjOiq,XPplInuZBcqpy,huxxZYAdmJyFnQQxAfHJ,MpDjJRimYDfyo,BYAPwgWFBzBHohBAdD,CDJNqL";

        Set<String> tSet = new TreeSet<>((o1, o2) -> o1.hashCode() - o2.hashCode());
        Collections.addAll(tSet, str.split(","));

        System.out.println("set is [" + setToString(tSet) + "]");

        Iterator<String> itr = tSet.iterator();
        while(itr.hasNext()){
            String s = itr.next();
            if(!tSet.contains(s)){
                System.out.println("error, not contain : " + s);
                return;
            }
        }
    }

    private static String setToString(Set<String> set){
        java.util.Iterator<String> itr = set.iterator();
        StringBuilder sb = new StringBuilder();
        while(itr.hasNext()){
            String str = itr.next();
            sb.append(str).append(',');
        }
        return sb.toString();
    }
}

执行结果:

set is [MRbFCZFnmfPJhlFYoln,tmxPBkCLeKwZcCoTAzh,EnOOSugzONKXxkjOiq,LUWqMHg,XPplInuZBcqpy,qfrBJPxTjF,QKEgYnNuSjpwHihgcK,VufRnSSkuGE,tuSGJwjjRQ,juzUTdIOergNYclAkDU,huxxZYAdmJyFnQQxAfHJ,MpDjJRimYDfyo,BYAPwgWFBzBHohBAdD,MBOZAcIi,OQljsZfLrsjAmVhxw,OLIndeoVAQ,CDJNqL,dUNhBLThXeUgJnG,spcuXoePSj,xrNZArc,xqIkXvYStBUkg,WUMwGLYggBic,IeOIFbMZVAyupAkygT,EUZAAAlVNhyzNUWZXvH,XBKFPN,XUAlVq,znEhBCvvCmYSIhAVJSp,PNPuDXsozP,VhvYQhygALyfp,mEkzmHUgSmsfqlyhQARw,CVDEmjIWbDR,hwPucmOANsNX,OZMcBxPPhl,YyUNDtAg,xrAPnDlA,ElGyJqyPwf,lZElDM,fpwKhGfXHZdV,PlqEgPXANqijZcAIDsJz,FATeTVcJoiCdcR,TAUQkeLkSOV,LhDELDpN,xnqcFyNCgPnIplm,JOmTwjYMNuMhjDK,HePrRXfgDkvOkBjX,MMXGnRpsqEOSOSKGWZcH,REqdLqAORhtIiPEmkIb,oClzNLrMGdjuMqr,eEpVJqHnGWVMSkVh,pgKkjfRQj,gQLLpdFXeEeMwc,stOPPTsvjUOgy,SoletVJ,UnDtuEWOZmoy,kkXnwzyLhQWVfXcLxom,cRTAOvrEunD,WyXANBzHsAc,A,J,N,O,R,T,e,g,Nn,Ny,bA,tN,st,DYG,Eng,Yri,psG,IVkO,ODOc,eLEj,gNBX,mqOn,rmgA,BGeqP,TosXr,pHXUc,ptyEu,uPMxE,wMRlE,wlbZt,AxizjBAFvD,Jvfgcps,fBGmwglnEIrUIKFWgptN,bRKSqPBvx,JwGzVGIr,xNZnSACYEEbD,IxkCseXT,NGIhHWKxWS,cEHizFzmUq,YPNzAPZR,luGLTsFCkVBjA,nZgVTWyNQNQUUdfsxZA,rQsSmhJzxA,]
error, not contain : MRbFCZFnmfPJhlFYoln

TreeSet里明明有MRbFCZFnmfPJhlFYoln, 为什么contains返回false?

###

因为你传了个自定义的 comparator
(o1, o2) -> o1.hashCode() - o2.hashCode()
如果想要默认行为的话不传就行

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器