我实际上有几个问题.
我有一个类Dog与以下实例字段:
private int id;
private int id_mother;
private int id_father;
private String name="";
private String owner="";
private String bDate="";
Run Code Online (Sandbox Code Playgroud)
我还有一个类Archive,它可以实例化Dog并将Dog对象放入ArrayList中.
我试图在Archive中编写一个方法,它接受一个整数作为ID并查看ArrayList,并返回包含该ID的对象.
private Dog getDog(int id){
Dog dog = new Dog();
int length=getSize();
int i=0;
dog=al.get(i);
i++;
while(dog.getId()!=id && i<length)
dog=al.get(i);
i++;
if(dog.getId()!=id)
dog=null;
return dog;
}//end getDog
Run Code Online (Sandbox Code Playgroud)
这种方法有两个问题(我使用的其他方法).首先它没有用,我看不出原因.我正在循环(可能)arraylist中的所有对象,因为在循环结束后,检查循环是否完成,因为它用完了要搜索的对象,或者因为它找到了具有给定ID的对象.其次,这似乎是一个非常耗时的过程.有什么方法可以加快速度吗?
我需要使用ArrayList填充JComboBox.有没有办法做到这一点?
我的代码抛出一个NullPointerException,即使该对象似乎正确存在.
public class IrregularPolygon {
private ArrayList<Point2D.Double> myPolygon;
public void add(Point2D.Double aPoint) {
System.out.println(aPoint); // Outputs Point2D.Double[20.0, 10.0]
myPolygon.add(aPoint); // NullPointerException gets thrown here
}
}
// Everything below this line is called by main()
IrregularPolygon poly = new IrregularPolygon();
Point2D.Double a = new Point2D.Double(20,10);
poly.add(a);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我想从一个ArrayList完成它的时候删除一个对象,但我找不到办法去做.试着像下面的示例代码中删除它不想工作.我怎么能px在这个循环中找到当前对象的迭代器来删除它?
for( Pixel px : pixel){
[...]
if(px.y > gHeigh){
pixel.remove(pixel.indexOf(px)); // here is the thing
pixel.remove(px); //doesn't work either
}
}
Run Code Online (Sandbox Code Playgroud) 会发生什么Java的内部ArrayList<T>(也可能是许多其他类)是有一个内部Object[] array = new Object[n];,哪个T对象被写入.每当从中读取元素时,return (T) array[i];都会进行强制转换.所以,每次阅读时都要施展.
我想知道为什么这样做.对我来说,似乎他们只是做了不必要的演员表.是不是更合乎逻辑,也更快一点,只是创建一个T[] array = (T[]) new Object[n];然后只是return array[i];没有演员表?这只是每个数组创建一个强制转换,通常远远小于读取次数.
为什么他们的方法是首选的?我不明白为什么我的想法不是更严格?
如何将没有分隔符的String转换为ArrayList<Character>.
我的字符串是这样的:
String str = "abcd..."
Run Code Online (Sandbox Code Playgroud)
我知道这样做的一种方法是将String转换为char[]first,然后将其转换char []为ArrayList <Character>.
有没有更好的方法来做到这一点?喜欢直接转换?考虑时间和性能,因为我正在使用大型数据库进行编码.
假设我有这样的课程:
class A {
int elementA;
int elementB
}
Run Code Online (Sandbox Code Playgroud)
我也有ArrayList这样的:ArrayList<A> listObj.
如何仅使用某些属性来检查该列表是否包含对象A?例如,只考虑elementA查找对象newA{elementA}是否已在列表中?
对于对象,A我已经定义了一个equals方法,我只考虑了这个方法elementA,但这还不够.
在ArrayList上使用Queue的一个基本参数是Queue保证FIFO行为.
但是如果我向ArrayList添加10个元素然后从第0个元素开始迭代元素,那么我将按照添加它们的顺序检索元素.基本上,这保证了FIFO行为.
与传统的ArrayList相比,Queue有什么特别之处?
在JDK 1.7中,有一个ArrayList声明被使用asList.
为什么他们做了一个新的private static class而不是使用java.util.ArrayList:
@SafeVarargs
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
/**
* @serial include
*/
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
public int size() {
return a.length;
}
public Object[] toArray() {
return a.clone();
}
public <T> T[] …Run Code Online (Sandbox Code Playgroud) 我有2个列表:
List<String> subjectArr = Arrays.asList<String>("aa", "bb", "cc");
List<Long> numArr = Arrays.asList<Long>(2L, 6L, 4L);
Run Code Online (Sandbox Code Playgroud)
如何创建新的List和拉链两个列表?
List<?> subjectNumArr = zip(subjectArr, numArr);
// subjectNumArr == [{'aa',2},{'bb',6},{'cc',4}]
Run Code Online (Sandbox Code Playgroud)