如何获取ArrayListJava中的数组切片?具体来说,我想做这样的事情:
ArrayList<Integer> inputA = input.subList(0, input.size()/2);
// where 'input' is a prepouplated ArrayList<Integer>
Run Code Online (Sandbox Code Playgroud)
所以我希望这可以工作,但Java返回List- 所以它是不兼容的.当我试图施展它时,Java不会让我.我需要ArrayList- 我该怎么办?
刚回到使用C++并试图转换我最近写的一个简单的Java程序.
什么是C++中Java ArrayList的首选等价物?
所以我还是刚接触Java并且我一直在使用ArrayList - 我想要实现的是一种方法来做这样的事情:
Item 1
Item 2
Item 3
Item 4
Run Code Online (Sandbox Code Playgroud)
所以我试图能够在列表中移动项目,除非它已经在顶部,在这种情况下它将保持不变.例如,如果移动了第3项,则列表将为:
Item 1
Item 3
Item 2
Item 4
Run Code Online (Sandbox Code Playgroud)
从我目前的小理解那时起,我想要的是:
IF arrayname index is not equal to 0
THEN move up
ELSE do nothing
Run Code Online (Sandbox Code Playgroud)
我正在努力的部分是"向上移动"部分.任何有关如何实现这一目标的提示或代码示例都非常感谢.
我一直在计划使用simpleXML来满足我的序列化需求,但我想我会尝试使用JSON来学习新的东西.
这是我用来尝试使用Gson 1.7.1序列化测试POJO的ArrayList的代码.
注意:我删除了字符串"s"的读/写器以简化代码.
package test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.google.gson.Gson;
public class TestGsonSerialDeserialList {
public static void main(String[] args) throws IOException{
Gson gson = new Gson();
//Make Serial
String s;
List<TestObject> list = Collections.synchronizedList(new ArrayList<TestObject>() );
list.add(new TestObject());
list.add(new TestObject());
s = gson.toJson(list, ArrayList.class);
System.out.println(s);
//Eat Serial
List<TestObject> list2 = Collections.synchronizedList(gson.fromJson(s, ArrayList.class) );
System.out.println(list2.get(0) );
System.out.println(list2.get(1) );
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
[{"objectID":1,"i1":12345,"name":"abcdefg","s":["a","b","c"]},{"objectID":2,"i1":12345,"name":"abcdefg","s":["a","b","c"]}]
java.lang.Object@5c74c3aa
java.lang.Object@75d9fd51
Run Code Online (Sandbox Code Playgroud)
对我的新手来说,这看起来是正确的.只有DeSerialized对象列表包含基本对象,而不是我序列化的TestObject.任何人都可以向我解释一下,如果有的话,我可以做些什么来使这项工作?
编辑:
更正测试:感谢ColinD
package test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; …Run Code Online (Sandbox Code Playgroud) 我将值放入形式的hashmap中,
Map<Long, Double> highLowValueMap=new HashMap<Long, Double>();
highLowValueMap.put(1l, 10.0);
highLowValueMap.put(2l, 20.0);
Run Code Online (Sandbox Code Playgroud)
我想用values()map方法创建一个列表.
List<Double> valuesToMatch=new ArrayList<>();
valuesToMatch=(List<Double>) highLowValueMap.values();
Run Code Online (Sandbox Code Playgroud)
要么
List<Double> valuesToMatch=(List<Double>) highLowValueMap.values();
Run Code Online (Sandbox Code Playgroud)
但是,它会引发异常:
线程"main"中的异常java.lang.ClassCastException:
java.util.HashMap $不能将值强制转换为java.util.List
但它允许我将其传递给列表的创建:
List<Double> valuesToMatch = new ArrayList<Double>( highLowValueMap.values());
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType();
List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
Run Code Online (Sandbox Code Playgroud)
它将JSON字符串转换List为对象.但是现在我希望在运行时定义ArrayList动态类型(不仅仅是myClass).
所述ArrayList的项目类型将与被定义反射.
我试过这个:
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
return typeOfObjectsListNew;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.这是例外:
java.sql.SQLException: Fail to convert to internal representation: {....my json....}
Run Code Online (Sandbox Code Playgroud) 请帮我下面的代码,即使更改了值,我也会获得相同的输出
import java.util.*;
class Test {
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList<Integer>();
// added 0-9 to ArrayList
for(int i=0;i<9;i++)
a.add(new Integer(i));
// initialize the Iterator
Iterator<Integer> i = a.iterator();
// changed the value of first element in List
if(i.hasNext()) {
Integer x = i.next();
x = Integer.valueOf(9);
}
// initialized the iterator again and print all the elements
i = a.iterator();
while(i.hasNext())
System.out.print(i.next());
}
}
//Output : 012345678
Run Code Online (Sandbox Code Playgroud)
值9未更新.
我怎样才能像在java中一样创建数组?
int A[] = new int[N];
Run Code Online (Sandbox Code Playgroud)
我怎么能在Kotlin做到这一点?
在以下代码中:
static void findSubsets (ArrayList<Integer> numbers, int amount, int index)
{
ArrayList <Integer> numbersCopy = new ArrayList<Integer>(numbers.size());
Collections.copy(numbersCopy, numbers);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest
at java.util.Collections.copy(Collections.java:548)
at backtracking2.Main.findSubsets(Main.java:61)
Run Code Online (Sandbox Code Playgroud)
为什么?
如果我有一个ArrayList,并且我添加了一个对象,后来我修改了这个对象,这个更改是否会反映在ArrayList中?或者当我将对象添加到ArrayList时,Java会创建一个副本并将其添加到ArrayList中吗?
如果我将对此对象的引用更改为null,该怎么办?这是否意味着ArrayList中的对象现在也为null?
arraylist ×10
java ×10
collections ×2
gson ×2
arrays ×1
c++ ×1
hashmap ×1
json ×1
kotlin ×1
reflection ×1