您好我想为ArrayList类创建一个自定义方法。
让我说我制作一个新的ArrayList。
ArrayList<String> list = new ArrayList<String>
我想制作一个我可以在列表上调用的方法。 像这样:
list.myMethod();
我想用我的方法解决的问题是你可以获得一个Object by Object名称,而不是在ArrayList中索引。
所以基本上我想让一个方法返回以下内容:
list.get(list.indexOf(str));
总结一下:
ArrayList<String> list= new ArrayList<>();
String str = "asd";
String str2 = "zxc";
list.add(str2);
list.add(str);
System.out.println(list.get(0));
System.out.println(list.get(list.indexOf(str)));
将打印:“asd”“asd”。
所以不要写:list.get(list.indexOf(Object))
我希望能够写list.myMethod(Object)
并得到相同的结果。我希望你理解我的问题。我知道这可能是一个愚蠢的解决方案,我可以使用Map。但这仅用于学习目的,我将不会使用任何内容。
答案 0 :(得分:4)
自定义方法&gt;&gt;
public class MyArrayList<E> extends ArrayList<E> {
public E getLastItem(){
return get(size()-1);
}
}
如何使用&gt;&gt;
MyArrayList<String> list= new MyArrayList<>();
String str = "asd";
String str2 = "zxc";
list.add(str2);
list.add(str);
System.out.println(list.getLastItem());
答案 1 :(得分:3)
您需要扩展ArrayList类,但您应该考虑使用
var dateFormat = "01/05/2099";
var dateMissing = "25/11/2016";
var parts, dt1, dt2;
var parts = dateFormat.split("/");
var dt1 = new Date(+parts[2], +parts[1] - 1, +parts[0]);
parts = dateMissing.split("/");
var dt2 = new Date(+parts[2], +parts[1] - 1, +parts[0]);
if (dt1 > dt2) {
dateFormat = dateMissing;
}
console.log("dateFormat:", dateFormat);
console.log("dt1", dt1.toString());
console.log("dt2", dt2.toString());
通过这种方法,您可以执行类似
的操作Map<String, Object>
答案 2 :(得分:3)
您应该使用新方法扩展ArrayList
类创建自己的类。但如果你的名单增长太多,表现会很糟糕。 indexOf
方法有O(n),因此您需要等待的时间越长,数组越大。
如果您想直接访问该元素,可能应该选择其他集合。在您的情况下,存储在集合中的元素是唯一的,您可以使用Set
。
另一方面,Set
不保留插入顺序。我不知道这是否是你认为必须要关心的。
Set
只是告诉您元素是否包含在集合中。
另一个您感兴趣的集合是Map
,这是一个键值集合。
但鉴于你只有钥匙,这似乎不是你的情况。