标签: arraylist

.net做ArrayList.Clear释放内存?

我有一个人口稠密的arraylist,我想清除和重用.如果我清除它会释放以前使用过的内存吗?

我还应该提一下,arraylist是一个私有的只读字段,在我第一次使用arraylist之后仍然有许多活跃的工作要做.所以我不能等到课后超出范围的垃圾收集.

Clear方法足够快吗?或者我应该销毁并创建一个新的arraylist?

问题更新:

如果我有这样的字段声明(感谢Jon的建议)

    /// <summary>
    /// Collection of tasks.
    /// </summary>
    private List<Task> tasks = new List<Task>();
Run Code Online (Sandbox Code Playgroud)

然后我填充它....(严重)

现在,如果不是清除和修剪,我可以打电话:

tasks = new List<Task>(); 
Run Code Online (Sandbox Code Playgroud)

这会被推荐吗?

.net c# arraylist

7
推荐指数
1
解决办法
6898
查看次数

按对象属性排序对象的ArrayList

我有一个物体的Arraylist.这些对象具有属性或数据类型 - 'String'.我需要按字符串对Arraylist进行排序.怎么做到这一点?

java sorting string arraylist

7
推荐指数
2
解决办法
2万
查看次数

如何从HashMap中提取ArrayList并在Java中循环它?

我已经像这样设置了一个HashMap:

Map<String, ArrayList<String>> theAccused = new HashMap<String, ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)

...我通过存储每个名称(键),一个名称列表(值)来填充它.所以:

ArrayList<String> saAccused = new ArrayList<String>();
// populate 'saAccused' ArrayList
...
// done populating
theAccused.put(sAccuser, saAccused);
Run Code Online (Sandbox Code Playgroud)

所以现在,我想查看HashMap中的所有条目,看看(对于每个'sAcucuser')列表'saAccused'是否包含某个名称.到目前为止,这是我失败的尝试:

Set<String> setAccusers = theAccused.keySet();
Iterator<String> iterAccusers = setAccusers.iterator();
iterAccusers.next();
ArrayList<String> saTheAccused;

// check if 'sAccuser' has been accused by anyone before
for (int i = 0; i < theAccused.size(); i++) {
    saTheAccused = theAccused.get(iterAccusers);

    if (saTheAccused.contains(sAccuser)) {

    }
    iterAccusers.next();
}
Run Code Online (Sandbox Code Playgroud)

...但是我不确定Set和Iterator类是如何工作的:/问题是我没有"值"...名称... 'sAccuser's ...用于HashMap可用.

简而言之,我想迭代HashMap并检查特定名称是否存储在任何列表中.那我该怎么做呢?如果您需要我进一步了解或清除任何混淆,请告诉我.

谢谢.

java lookup contains arraylist hashmap

7
推荐指数
1
解决办法
8720
查看次数

ArrayList.Sort应该是一个IComparer的稳定排序,但不是?

一个稳定的排序是一种维护具有相同值元素的相对顺序.

ArrayList.Sort上的文档说当IComparer提供a时,排序是稳定的:

如果comparer设置为null,则此方法执行比较排序(也称为不稳定排序); 也就是说,如果两个元素相等,则可能不会保留它们的顺序.相反,稳定的排序保留了相等元素的顺序.要执行稳定排序,必须实现自定义IComparer接口.

除非我遗漏了某些内容,否则以下测试用例显示ArrayList.Sort未使用稳定排序:

internal class DisplayOrdered {
    public int ID { get; set; }
    public int DisplayOrder { get; set; }
    public override string ToString() {
        return string.Format("ID: {0}, DisplayOrder: {1}", ID, DisplayOrder);
    }
}

internal class DisplayOrderedComparer : IComparer {
    public int Compare(object x, object y) {
        return ((DisplayOrdered)x).DisplayOrder - ((DisplayOrdered)y).DisplayOrder;
    }
}

[TestFixture]
public class ArrayListStableSortTest {

    [Test]
    public void TestWeblinkCallArrayListIsSortedUsingStableSort() {
        var call1 = new DisplayOrdered {ID = …
Run Code Online (Sandbox Code Playgroud)

c# sorting arraylist stability

7
推荐指数
1
解决办法
3305
查看次数

问题迭代通过ArrayLists

我有两个问题.我这里有一个类型的对象ArrayList,对于这种情况,我们称之为"Car".

我做了两个:

Car car1 = new Car();
Car car2 = new Car();
Run Code Online (Sandbox Code Playgroud)

我有一个函数来向这些Car对象添加项目:

car1.addPart("Front Wheels");
car1.addPart("Rear Wheels");
car1.addPart("Rear View Mirror");

car2.addPart("Rims");
car2.addPart("Steering Wheel");
car2.addPart("Bumper");
Run Code Online (Sandbox Code Playgroud)

我需要一个sameContents()可以调用的函数car1:

car1.sameContents(car2);
Run Code Online (Sandbox Code Playgroud)

它传入一个类型的对象ArrayList并检查它,car1看它们是否具有相同的内容和相同的顺序.

public boolean sameContents(Car c) {
    ArrayList<String> other_car = c; // error: Type mismatch: 
                                    // cannot convert from Car to ArrayList<String>

    for (String c : this.parts) {
        System.out.println(c);
        for(String oc : other_car) { 
             // stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我似乎对这个有各种各样的问题.我无法获得other_car在foreach循环中使用的变量.


第二个需要做的是 …

java foreach arraylist

7
推荐指数
1
解决办法
6万
查看次数

Java ArrayList添加当前大小以外的项目

想知道是否有一种有效的方法将项目添加到Java的ArrayList中,其位置比当前大小更大:

场景:

   ArrayList<Item> items = new ArrayList<Item>;
   ... let's say I add three elements
Run Code Online (Sandbox Code Playgroud)

现在我想在位置10添加一个项目(将项目从3到10保留为null)

  items.add(10,newItem);  // item.size() == 3 
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的方法可以使用null调整/填充ArrayList?

Java的实现使大小字段私有:-( ..

java arraylist

7
推荐指数
1
解决办法
5308
查看次数

为什么简单的List <T>似乎比ArrayList慢?

出于好奇,我想测试将GenericList与ArrayList进行比较的刻度数.

对于下面的代码,当我检查秒表时,ArrayList似乎更快.

我做错了还是有解释?(我相信List会更快)

测试代码和输出如下:

private static void ArrayListVsGenericList()
{
    // Measure for ArrayList
    Stopwatch w0 = new Stopwatch();
    w0.Start();

    ArrayList aList = new ArrayList();

    for (int i = 0; i < 1001; i++)
    {
        Point p = new Point();
        p.X = p.Y = i;

        aList.Add(p);
    }

    foreach (Point point in aList)
    {
        int v0 = ((Point) aList[8]).X; //unboxing
    }


    w0.Stop();

    // Measure for Generic List<Point>
    Stopwatch w1 = new Stopwatch();
    w1.Start();

    List<Point> list = new List<Point>();

    for (int i …
Run Code Online (Sandbox Code Playgroud)

.net c# generics clr arraylist

7
推荐指数
2
解决办法
307
查看次数

防止arraylist中的重复条目

假设我像这样创建一些对象类

public class thing {
        private String name; 
        private Integer num;

        public oDetails (String a, Integer b) {
            name = a;
            num = b;
        }
...gets/ sets/ etc
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个arraylist来保存这样的对象类.

ArrayList<thing> myList = new ArrayList<thing>;
thing first = new thing("Star Wars", 3);
thing second = new thing("Star Wars", 1);
myList.add(first);
myList.add(second);
Run Code Online (Sandbox Code Playgroud)

我想包含某种逻辑,以便在这种情况下......当我们尝试添加对象"second"而不是向arrayList添加新对象时,我们将second.getNum()添加到first.getNum().因此,如果您要遍历ArrayList,那么它就是

"Star Wars", 4
Run Code Online (Sandbox Code Playgroud)

我无法想出一个处理这个问题的优雅方法.随着arraylist的增长,搜索它以确定是否存在重复的名称项变得麻烦.任何人都可以提供一些指导吗?

java arraylist no-duplicates

7
推荐指数
1
解决办法
2万
查看次数

未序列化的Arraylist总是空的

我在Java中有很多类,但这是我第一次尝试序列化任何东西.我创建了自己的课程,其中包括一个arraylist.主要对象是这些类的arraylist.我相信我已经做好了一切,但是当我再读回来时,arraylist总是空着的.

主要(主要是测试)类:

import java.io.*;
import java.util.ArrayList;

public class IOTest {
public static void main(String[] args) {
    ArrayList<Info> master = new ArrayList <Info>();
    Info a = new Info("a");
    Info b = new Info("a");
    Info c = new Info("a");
    master.add(a);
    master.add(b);
    master.add(c);
    print(master);
    save(master);
    ArrayList<Info> loaded = new ArrayList <Info>();
    load(loaded);
    System.out.println("Loaded List:");
    System.out.println("Loaded Size:" + loaded.size());
    print(loaded);
}

public static void save(ArrayList a){
    File f = new File("savefile.dat");
    try {
        FileOutputStream fos = new FileOutputStream(f);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(a); …
Run Code Online (Sandbox Code Playgroud)

java serialization arraylist

7
推荐指数
1
解决办法
1030
查看次数

使用字母前的字母对Java ArrayList进行排序

我目前正在传递一个ArrayList来填充Android中TabLayout的标题.数组中的元素是字符串:["RCP", "RYL", "1", "2", "3", "4", "5", "6"].但不一定按顺序排列.

我想首先使用Letter元素(按字母顺序)返回列表,然后逐步增加整数.

我已经尝试过使用该Collections.sort方法,但这会返回一个数字上升的列表,然后在最后添加"R"字符串:["1", "2", "3", "4", "5", "6", "RCP", "RYL"]

为了澄清,我想对我的ArrayList进行排序,以便它返回["RCP", "RYL", "1", "2", "3", "4", "5", "6"]它也需要灵活,因为"R",字符串的标题可能会改变.

谢谢

java sorting android arraylist

7
推荐指数
1
解决办法
2402
查看次数