标签: arraylist

按长度排序字符串的ArrayList

我想按长度订购字符串的ArrayList,但不仅仅是按数字顺序.

比如说,列表包含以下单词:

cucumber
aeronomical
bacon
tea
telescopic
fantasmagorical
Run Code Online (Sandbox Code Playgroud)

它们需要按长度差异排序为特殊字符串,例如:

intelligent
Run Code Online (Sandbox Code Playgroud)

所以最终的列表看起来像这样(括号中的差异):

aeronomical     (0)
telescopic      (1)
fantasmagorical (3) - give priority to positive differences? doesn't really matter
cucumber        (3)
bacon           (6)
tea             (8)
Run Code Online (Sandbox Code Playgroud)

java sorting arraylist

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

在ArrayList中添加foreach循环时,ConcurrentModificationException

我正在尝试使用arraylist的foreach循环,但是当我使用它时,它会给我错误,但是当我使用普通for循环时,它完美地工作,可能是什么问题?

代码在这里:

for (Pair p2 : R) {
    if ((p2.getFirstElm() == p.getSecondElm()) && (p2.getFirstElm() != p2.getSecondElm())) 
        R.add(new Pair (p.getFirstElm(), p2.getSecondElm()));
    else if ((p2.getSecondElm() == p.getFirstElm()) && (p2.getFirstElm() != p2.getSecondElm())) 
        R.add(new Pair (p2.getFirstElm(), p.getSecondElm()));

    // else
    // There are no transitive pairs in R.
}
Run Code Online (Sandbox Code Playgroud)

这是不起作用的循环,这是一个有效的循环:

for (int i = 0; i < R.size(); i++) {
    if ((R.get(i).getFirstElm() == p.getSecondElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm())) 
        R.add(new Pair (p.getFirstElm(), R.get(i).getSecondElm()));
    else if ((R.get(i).getSecondElm() == p.getFirstElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm())) 
        R.add(new Pair (R.get(i).getFirstElm(), p.getSecondElm())); …
Run Code Online (Sandbox Code Playgroud)

java foreach for-loop arraylist

19
推荐指数
1
解决办法
3万
查看次数

使用For循环从ArrayList中删除数据

我遇到了一个奇怪的问题.我认为这会花费我几分钟,但我现在正在努力几个小时......这就是我得到的:

for (int i = 0; i < size; i++){
    if (data.get(i).getCaption().contains("_Hardi")){
        data.remove(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

该data是ArrayList. 在ArrayList中我得到了一些字符串(共14个左右),和他们的9,它得名_Hardi.

使用上面的代码我想删除它们.如果我replace data.remove(i);用a System.out.println然后打印9次,那么好,因为_Hardi在ArrayList中9次.

但是当我使用data.remove(i);它时它不会删除所有9个,而只删除少数几个.我做了一些测试,我也看到了这个:

当我将字符串重命名为:Hardi1 Hardi2 Hardi3 Hardi4 Hardi5 Hardi5 Hardi6

然后它只删除偶数(1,3,5等).他一直在跳过1,但无法弄清楚原因.

如何解决这个问题?或者可能是另一种方法来删除它们?

java android arraylist

19
推荐指数
4
解决办法
3万
查看次数

如何在java中创建2D ArrayList?

我想创建一个每个单元格都是一个2D数组ArrayList!

我认为这个定义,但我不能添加任何东西这些定义是真的吗?!

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

要么

ArrayList[][] table = new ArrayList[10][10];

//table.add??????
Run Code Online (Sandbox Code Playgroud)

请帮我

java arraylist

19
推荐指数
3
解决办法
26万
查看次数

为什么我需要同步Collections.synchronizedList返回的列表

我在dos.oracle.com找到了这个

public static List synchronizedList(列表列表)

返回由指定列表支持的同步(线程安全)列表.为了保证串行访问,必须通过返回的列表完成对后备列表的所有访问.当迭代它时,用户必须手动同步返回的列表:

  List list = Collections.synchronizedList(new ArrayList());
      ...
  synchronized(list) {
      Iterator i = list.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我必须同步列表来迭代它,如果Collections.synchronizedList();它应该返回已经同步的列表?

我只是在两个线程中访问列表:一个线程只添加,另一个线程获取和删除.您建议在此方案中使用哪些其他类?

谢谢阅读.

java multithreading synchronization arraylist

19
推荐指数
1
解决办法
4625
查看次数

从ArrayList中删除重复值

我有一个字符串的Arraylist,我在其中添加了一些重复值.我只是想删除重复值,所以如何删除它.

这里的例子我有一个想法.

List<String> list = new ArrayList<String>();
        list.add("Krishna");
        list.add("Krishna");
        list.add("Kishan");
        list.add("Krishn");
        list.add("Aryan");
        list.add("Harm");

        System.out.println("List"+list);

        for (int i = 1; i < list.size(); i++) {
            String a1 = list.get(i);
            String a2 = list.get(i-1);
            if (a1.equals(a2)) {
                list.remove(a1);
            }
        }

        System.out.println("List after short"+list);
Run Code Online (Sandbox Code Playgroud)

但是有没有足够的方法删除重复的表单列表.没有使用For循环?你可以通过使用HashSet或其他方式,但只使用数组列表.我想对此有你的建议.谢谢你提前回答.

java sorting list arraylist

19
推荐指数
5
解决办法
16万
查看次数

泛型列表<String>和List <Integer>的行为不符合预期

为什么println打印"tom"并且在转换后没有显示任何运行时异常List<Integer>,而它在转换后无法打印值1 List<String>?

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String args[]) {

        List list = Arrays.asList(1, "tom");

        System.out.println(((List<Integer>) list).get(1));
        // "tom"

        System.out.println(((List<String>) list).get(0));
        // ClassCastException: Integer cannot be cast to String
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics list arraylist

19
推荐指数
1
解决办法
1157
查看次数

如何使用Javassist创建ArrayList

我想在检测期间将arrayList添加到方法中.我在尝试添加一行来创建Map时尝试了(Javassist CannotCompileException),但它抛出了一个与java.lang.VerifyError不同的异常.

    public void createInsertBefore(String scenarioName, String className, CtMethod method,
                                   String insertBefore) throws CannotCompileException {
        method.addLocalVariable("startTime", CtClass.longType);
        StringBuilder bBuilder = new StringBuilder();
        bBuilder.append("startTime = System.nanoTime();");
        bBuilder.append("System.out.println(startTime);");

        if((insertBefore!=null) && !insertBefore.isEmpty()){
            bBuilder.append(insertBefore);
        }

        bBuilder.append("java.util.List metadata = new java.util.ArrayList();");

        System.out.println(bBuilder.toString());
        method.insertBefore(bBuilder.toString());
}
Run Code Online (Sandbox Code Playgroud)

从print语句收到的输出是,

startTime = System.nanoTime();
System.out.println(startTime);
java.util.List metadata = new java.util.ArrayList();
Run Code Online (Sandbox Code Playgroud)

但它抛出以下异常,

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.lang.VerifyError
    at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
    at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:144) …
Run Code Online (Sandbox Code Playgroud)

java instrumentation arraylist

19
推荐指数
1
解决办法
715
查看次数

为什么每次添加新元素时ArrayList的hashCode()都会改变?

根据我的理解ArrayList,默认容量为10,当它超过10时,它将创建一个具有新容量的新对象,依此类推.

因此,出于好奇,我输入下面的程序来检查hashcode()的ArrayList对象:

public class TestCoreJava {

    public static void main(String [] args){

        ArrayList al = new ArrayList();

        for(int i=0;i<15;i++){

            al.add("Temp"+i);
            System.out.println("Hashcode for "+i+" element "+al.hashCode());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据上面的场景,当我没有设置ArrayList默认的初始容量时将是10.因此,在添加第11个元素时,它将创建一个新对象并增加容量ArrayList.

当我打印ArrayList对象的哈希码时,它hashcode()每次都会给出一个新的哈希码.

以下是o/p:

Hashcode for 0 element 80692955
Hashcode for 1 element -1712792766
Hashcode for 2 element -1476275268
Hashcode for 3 element 1560799875
Hashcode for 4 element 1220848797
Hashcode for 5 element -727700028
Hashcode for 6 element -1003171458 …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist hashcode

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

java.lang.NoSuchMethodError:排序arraylist android中没有接口方法排序(Ljava/util/Comparator;)异常

我正在尝试ArrayList在Android应用程序中对Java 进行排序,但我得到了这个奇怪的异常.

码:

eventsList.sort(new Comparator<Event>() {
        @Override
        public int compare(Event event, Event t1) {
            return event.getEventStartDate().compareTo(t1.getEventStartDate());
        }
    });
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.NoSuchMethodError: No interface method sort(Ljava/util/Comparator;)V in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)
Run Code Online (Sandbox Code Playgroud)

java android arraylist

19
推荐指数
4
解决办法
9932
查看次数