ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java Extend ArrayList函数

2019-06-20 22:47:57  阅读:347  来源: 互联网

标签:java arraylist inheritance list


让我说我有

class Dummy {
    String a, b;
    public Dummy(String a, String b) {
        this.a = a;
        this.b = b;
    }
    public String toString(){
        return a+b;
    }
    public String getA() {
        return a;
    }
    public String getB() {
        return b;
    }

}

我想拥有

List<Dummy> myList = new ArrayList<Dummy>() {{
     add(new Dummy("test", ""));
     add(new Dummy("boo", "o"));
}};

System.out.println( myList.toString());
System.out.println( myList.getAs());  //should return ["test", "boo"]
System.out.println( myList.getBs());//should return ["", "o"]

如果你明白我的意思

可能要创建类扩展ArrayList< Dummy> ?

编辑:

看起来很不错

class Dummy {
    String a, b;
//...
    public static String toAString(List<Dummy> l){
       String s="";
       for (Dummy d : l){
           s+=d.a;
       }
       return s;
    }
}

EDIT2:

我在Dummy中只有2个字符串,最好做一个ArrayList< String []>相反?在记忆方面

解决方法:

定义与getA和getB对应的第一类函数.我正在使用Guava的功能.

class Dummy {
    String a, b;
    public Dummy(String a, String b) {
        this.a = a;
        this.b = b;
    }
    public String toString(){
        return a+b;
    }
    public String getA() {
        return a;
    }
    public String getB() {
        return b;
    }
    public static Function<Dummy, String> getA = new Function<Dummy, String>() {
      public String apply(Dummy d) {
        return d.a;
      }
    }
    public static Function<Dummy, String> getB = new Function<Dummy, String>() {
      public String apply(Dummy d) {
        return d.b;
      }
    }
}

这就是你如何使用它:(下面的Iterables也来自Guava).

List<Dummy> myList = new ArrayList<Dummy>() {{
     add(new Dummy("test", ""));
     add(new Dummy("boo", "o"));
}};

System.out.println( myList.toString());
System.out.println( Iterables.transform(myList, Dummy.getA)); // returns ["test", "boo"]
System.out.println( Iterables.transform(myList, Dummy.getB)); // returns ["", "o"]

标签:java,arraylist,inheritance,list
来源: https://codeday.me/bug/20190620/1249151.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有