标签: arraylist

C#排列一系列的arraylists?

我有一个ArrayList [] myList,我正在尝试创建一个列表,列出数组中值的所有排列.

示例:(所有值均为字符串)

myList[0] = { "1", "5", "3", "9" };
myList[1] = { "2", "3" };
myList[2] = { "93" };
Run Code Online (Sandbox Code Playgroud)

myList的计数可以变化,因此事先不知道它的长度.

我希望能够生成一个类似于以下所有排列的列表(但有一些额外的格式).

1 2 93
1 3 93
5 2 93
5 3 93
3 2 93
3 3 93
9 2 93
9 3 93
Run Code Online (Sandbox Code Playgroud)

这是否理解我想要完成的事情?我似乎无法想出这样做的好方法,(如果有的话).

编辑:
我不确定递归是否会干扰我以自己的方式格式化输出的愿望.对不起我之前没有提到我的格式.

我想最终构建一个string []数组,其中包含如下格式的所有组合:

对于"1 2 93"排列

我希望输出为"val0 = 1; val1 = 2; val2 = 93;"

我现在将尝试递归.谢谢Dr.Jokepu

c# arrays arraylist permutation

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

将两个arraylists加入一个

我想检查branchList是否有相同的元素,如果相同,将branchList和tglList元素分开arraylist并将该arraylist放入另一个arraylist,

我想要的结果是BranchList1有2个arraylist,其中第一个arraylist包含元素'1',第二个arraylist包含元素'2',TglList1有2个arraylist作为元素,但我得到的是第1和第2个数组得到相同的值.

如何才能做到这一点?

ArrayList branchList = new ArrayList();
    branchList.add("1");
    branchList.add("1");
    branchList.add("1");
    branchList.add("2");
    branchList.add("2");
    branchList.add("2");

    ArrayList tglList = new ArrayList();
    tglList.add("5");
    tglList.add("10");
    tglList.add("20");
    tglList.add("100");
    tglList.add("500");
    tglList.add("1000");


    ArrayList newBranchList = new ArrayList();
    ArrayList newTglList = new ArrayList();

    ArrayList BranchList1 = new ArrayList();
    ArrayList TglList1 = new ArrayList();


    ArrayList abc = new ArrayList();
    String checkBranch = new String();

    for(int i=0;i<branchList.size();i++){
        String branch = branchList.get(i).toString();
        if(i==0 || checkBranch.equals(branch)){
            newBranchList.add(branch);
            newTglList.add(tglList.get(i).toString());
        }else{
            BranchList1.add(newBranchList);
            TglList1.add(newTglList);

            newBranchList.clear();
            newTglList.clear();

            newBranchList.add(branch);
            newTglList.add(tglList.get(i).toString());
        }
        if(i==(branchList.size()-1)){
            BranchList1.add(newBranchList);
            TglList1.add(newTglList);
        }
        checkBranch = …
Run Code Online (Sandbox Code Playgroud)

java arraylist

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

为什么Collection.toArray(T [])不采用E []

该toArray方法(可以接在执行java.util.ArrayList)如下:

class ArrayList<E> ....{
    public <T> T[] toArray(T[] a){
        if(a.length < size)
            return (T[]) Arrays.copyof(elementData, size, a.getClass());
        System.arraycopy(elementData, 0, a, 0, size);
        if(a.length > size)
            a[size] = null;
        return a;
    }    
}
Run Code Online (Sandbox Code Playgroud)

我想知道我们可以使用<E>而不是<T>在这种情况下吗?喜欢

public E[] toArray(E[] a){
      if(a.length < size)
             return (E[]) Arrays.copyof(elementData, size, a.getClass());
      System.arraycopy(elementData, 0, a, 0, size);
      if(a.length > size)
            a[size] = null;
      return a;
}    
Run Code Online (Sandbox Code Playgroud)

由于ArrayList类iteself已经是通用的<E>,所以我们可以使用它而不是新的泛型类型<T>吗?

java generics arraylist

11
推荐指数
2
解决办法
733
查看次数

从ArrayList <CustomObject>中查找项目索引的更好方法

首先,如果我错了,请纠正我.我想在ArrayList<CustomType>不使用For循环的情况下找到Item的索引(即字符串值).

POJO:

id;
name;
Run Code Online (Sandbox Code Playgroud)

码:

ArrayList<POJO> list = new ArrayList<POJO>;

//Lots of data added to these list...
Run Code Online (Sandbox Code Playgroud)

现在我想从arraylist中找到特定名称的id而不使用下面的for循环.

String id = null;
// TODO Auto-generated method stub
for (int i = 0; i < list.size(); i++) {
    if("ABCD".equalsIgnoreCase(list.get(i).getName())) {
        id = list.get(i).getId();
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我不想实现For循环,因为在某些情况下,我在List中有500多个数据,并且使用For循环查找索引不是一个好方法.

java search arraylist indexof

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

如何清除ArrayList?

我有以下代码ThisClass:

static ArrayList<MyClass> classlist; 
Run Code Online (Sandbox Code Playgroud)

如果我打电话:

ThisClass.classlist = new ArrayList<MyClass>();
ThisClass.classlist.add(object);
Run Code Online (Sandbox Code Playgroud)

然后再次调用此行:

ThisClass.classlist = new ArrayList<MyClass>();
Run Code Online (Sandbox Code Playgroud)

它会重置ThisClass.classlist列表,即类列表列表将不再包含对象吗?

java android arraylist

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

通过Java中的属性值对对象ArrayList进行排序

我有ArrayList zombie,其中填充了一个名为的对象Zombie.Zombie有属性health,x,y.我怎么会在升序排列,使用属性对数组进行排序x的Zombie,最初具有随机值被设置?

我已经找到了解决问题的可能方法,但我不明白答案的语法.解释这个答案也可能有所帮助.

java sorting arraylist object

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

JDiagram旧版本在ExtendedArrayList.sort中使用JRE 8抛出StackOverflowError

我正在使用JDiagram JAR,如下所示

Diagram myDigram = new Diagram();
    myDigram.routeAllLinks();
Run Code Online (Sandbox Code Playgroud)

使用JRE 7运行时此代码可以正常工作,但是当它与JRE 8一起运行时,会抛出以下错误:

java.lang.StackOverflowError
    at java.util.Collections.sort(Unknown Source)
    at com.mindfusion.common.ExtendedArrayList.sort(Unknown Source)
    at java.util.Collections.sort(Unknown Source)
    at com.mindfusion.common.ExtendedArrayList.sort(Unknown Source)
    at java.util.Collections.sort(Unknown Source)
    at com.mindfusion.common.ExtendedArrayList.sort(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我跟着堆栈跟踪到JDiagram反编译代码.观察到routeAllLinks()在另一个对象(比如路由器)上调用RouteLinks(),并且在另一个级别深度调用错误堆栈跟踪中出现的ExtendedArrayList.sort().JDiagram中的"ExtendedArrayList"扩展了ArrayList,并包含一个名为"sort()"的方法,该方法具有以下定义.

  public void sort(Comparator<? super T> paramComparator)
  {
    Collections.sort(this, paramComparator);
  }
Run Code Online (Sandbox Code Playgroud)

在Google上,我发现JRE 8引入了List.sort()并将Collections.sort()调用委托给集合(在我的情况下为ExtendedArrayList)排序方法.因此,库ExtendedArrayList.sort()成为了一个覆盖.它会创建一个无限递归,从而导致stackoverflow.我现在可以用一小段代码重现这个问题.

也

  • 我们创建JDiagram对象的原始类在运行时由我们产品中的其他组件加载.我们对程序的加载几乎没有控制权.
  • 我们发现最新版本的JDiagram通过用sortJ7()方法替换sort()来解决这个问题.但是,此时我们无法升级库.JDiagram是一个许可的API.
  • ExtendedArrayList由JDiagram在内部实例化,因此我们无法从代码中更改它.

我们尝试过以下目前无效的解决方案

  • Java代理:因为我们的代码不直接调用ExtendedArrayList而且'Diagram'没有任何接口.
  • Spring AOP:我们没有使用spring,我们的程序也被其他组件加载运行时.
  • AspectJ:到目前为止,这显然是一个解决方案.但是,它也没有用,因为我们无法在运行时编写程序.不确定是否有人可以使它工作.

如果有任何要点需要详细说明,请告诉我.欢迎任何帮助.谢谢.

更新 到目前为止,javassist是最好的方法,但JDiagram混淆是阻止解决方案正常工作.我们有点认为考虑到我们的发布日期是不可能的(不得不说).我们已经开始升级库的过程.同时从我们的应用程序中删除了一个由routeAllLinks()方法提供的小功能.. :-(感谢大家的帮助.我将继续研究这个问题,因为我发现它真的很有趣和挑战..我如果我能解决它,我会更新帖子.而且我将继续为@gontard提供他的javassist方法,因为我正在继续我的研究.谢谢.

java collections arraylist java-8 default-method

11
推荐指数
1
解决办法
440
查看次数

将List列表转换为java中的列表

List<List<String>> superlist = new ArrayList<List<String>>();

List<String> list1 = new ArrayList<String>();
list1.add("a1");
list1.add("a2");

List<String> list2 = new ArrayList<String>();
list2.add("b1");
list2.add("b2");

List<String> list3= new ArrayList<String>();
list3.add("c1");
list3.add("c2");

superlist.add(list1);
superlist.add(list2);
superlist.add(list3);

List<String> result= new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个包含所有值的新列表superList.这里的结果应该包含a1,a2,b1,b2,c1,c2

java arraylist

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

未经检查的'java.util.ArrayList'赋值

我收到警告:

未经检查的'java.util.ArrayList'赋值给'java.util.ArrayList <com.test.mytest>'

对于:

private ArrayList<LocoList> myLocations = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

怎么解决?

java android warnings arraylist

11
推荐指数
1
解决办法
7691
查看次数

删除Java ArrayList中的对象 - 时间消耗

我正在尝试从大小为7,140,​​000的ArrayList中删除140,000个对象.我预计这将需要几秒钟(如果那样),而是Java每千个对象需要几秒钟.这是我的代码:

     for (int i = list.size(); i > P; i--)
     {
         int size = list.size();

         int index = (int) (Math.random() * size);

         list.remove(index);
     }
Run Code Online (Sandbox Code Playgroud)

注意:P是我之前设置为7,000,000的常量.

循环的目标是从列表中随机删除对象,直到其大小为7,000,000.

Java花了这么长时间,因为我开始使用超过700万个对象?我从未注意到过去从ArrayLists中删除这个效率问题.如果有帮助,我使用DrJava Beta IDE.

java performance arraylist

11
推荐指数
2
解决办法
1686
查看次数