我想按长度订购字符串的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) 我正在尝试使用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) 我遇到了一个奇怪的问题.我认为这会花费我几分钟,但我现在正在努力几个小时......这就是我得到的:
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,但无法弄清楚原因.
如何解决这个问题?或者可能是另一种方法来删除它们?
我想创建一个每个单元格都是一个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)
请帮我
我在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();它应该返回已经同步的列表?
我只是在两个线程中访问列表:一个线程只添加,另一个线程获取和删除.您建议在此方案中使用哪些其他类?
谢谢阅读.
我有一个字符串的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或其他方式,但只使用数组列表.我想对此有你的建议.谢谢你提前回答.
为什么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) 我想在检测期间将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) 根据我的理解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) 我正在尝试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)