在JavaScript中,我可以构建一个字符串值数组,如:
var stuff = new Array('foo','bar','baz','boz','gaz','goz');
Run Code Online (Sandbox Code Playgroud)
甚至更容易
var stuff = 'foo,bar,baz,boz,gaz,goz'.split(',');
Run Code Online (Sandbox Code Playgroud)
在Java中,它似乎过于冗长和复杂......是否有比这更简单的方法?
ArrayList<String> stuff = new ArrayList<String>();
stuff.add("foo");
stuff.add("bar");
stuff.add("baz");
stuff.add("boz");
stuff.add("gaz");
stuff.add("goz");
Run Code Online (Sandbox Code Playgroud)
在我的实际场景中,我有30-40个项目进入ArrayList ...我认为必须有一个更简单的方法!我忽视的显而易见的一点是什么?
我有一些类(Car,Motorcycle,Train...等),从延伸class Vehicle.从另一个类我需要创建一个ArrayList类,只能访问那些包含的类ArrayList.
这个概念与此类似,但显然它不起作用;
ArrayList<Class> vehicleType=new ArrayList<Class>();
vehicleType.add(Class.forName("train"));
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢
我想在java中动态地执行此操作.我知道如何在单维数组中插入值.我在二维数组中有点困惑.
static final String shades[][] = {
// Shades of grey
{
"lightgrey",
"dimgray",
"sgi gray 92",
},
// Shades of blue
{
"dodgerblue 2",
"steelblue 2",
"powderblue",
},
// Shades of yellow
{
"yellow 1",
"gold 1",
"darkgoldenrod 1",
},
// Shades of red
{
"indianred 1",
"firebrick 1",
"maroon",
}
};
Run Code Online (Sandbox Code Playgroud) 我在我的代码中使用了Arrays.asList().contains()方法,如上面的答案所示:如何测试数组是否包含某个值?,所以我将在代码中使用Arrays.asList().
但是,编译器拒绝以下代码.是因为我的素数数组使用原语而不是引用类型?由于自动装箱,我不这么认为,但我只想查一下.
import java.math.*;
import java.util.ArrayList;
import java.util.Arrays;
public class .... {
public static void main(String[] args) {
int[] primes = formPrimes(15);
ArrayList<Integer> primes1 = new ArrayList<Integer>(Arrays.asList(primes));
// Rest of code...
}
public static int[] formPrimes(int n) {
// Code that returns an array of integers
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,找不到符号错误.
symbol:构造函数ArrayList(java.util.List)
location:类java.util.ArrayList ArrayList primes1 = new ArrayList(Arrays.asList(primes));
基本上,我有一个函数返回一个整数数组,我想将它转换为数组列表,我使用ArrayList构造函数遇到了麻烦.
我是Android的新手.我做了搜索,但在Android中找不到像iOS的NSdictionary那样的工作.例如在iOS中,我可以像这种格式一样创建SIMPLE字典数组
Array
idx1: [objA1 for keyA],[objB1 for keyB],[objB1 for keyC]
idx2: [objA2 for keyA],[objB2 for keyB],[objB2 for keyC]
idx3: [objA3 for keyA],[objB3 for keyB],[objB3 for keyC]
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建类似于android中的字符串数组
<string-array name="list_obj1">
<item>ObjA1</item>
<item>ObjB2</item>
<item>ObjC3</item>
</string-array>
<string-array name="list_obj2">
<item>ObjB1</item>
<item>ObjB2</item>
<item>ObjB3</item>
</string-array>
<string-array name="list_obj3">
<item>ObjC1</item>
<item>ObjC2</item>
<item>ObjC3</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果有别的用于创建AN字典中的Android阵列一样的iOS.
谢谢您的帮助.
我试图在我的应用程序中的多个活动之间传递一个对象的ArrayList.是否可以使用setData()方法使用Intent执行此操作?
我正在开发一个Android游戏,我只是注意到,因为onTouchEvent在UI线程上运行,并且更新/渲染方法是从一个单独的线程运行的,所以它们都会更新ArrayList包含实体的内容.显然,如果他们碰巧同时修改了列表,他们会发生冲突.
我读到Vector该类ArrayList与Vector同步的唯一区别完全相同,因此它们不会发生冲突.真的吗?如果是的话,它是否有任何性能问题或我应该关注的事情?我之前从未上过Vector课.
编辑:我实际上的意思是改变
ArrayList<Obj> list = new ArrayList<Obj>();
至
Vector<Obj> list = new Vector<Obj>()
但正如答案所说,Vector不建议使用.选定的答案解决了我的问题.
我正在构建一个应用程序,允许用户连接到他们的本地WiFi网络而不会离开.但是,每当我在列表中选择一个项目时,就会出现错误的网络ID,并且它连接到错误的网络.我注意到了:
这是我的代码如下:
//from `onCreate` method
Button buttonScan = (Button) findViewById(R.id.buttonScan);
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
ListView lv = (ListView) findViewById(R.id.list);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
connectToWifi(arg2);
}
});
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
return true;
}
});
if (!wifi.isWifiEnabled()) {
Toast.makeText(getApplicationContext(), "Enabling Wifi", Toast.LENGTH_LONG).show();
wifi.setWifiEnabled(true);
}
SimpleAdapter adapter =
new SimpleAdapter(
NetworkCalibration.this,
arraylist,
R.layout.wifi_list_row,
new String[] { …Run Code Online (Sandbox Code Playgroud) 我有一个名称数组列表,我想查看重复的值(如果存在)并打印该值。问题是我对是否使用 contains 方法感到困惑,下面的代码不起作用。
ArrayList<String> list=new ArrayList();
list.add("Sagio Mane");
list.add("Karius");
list.add("Mo Salah");
list.add("Firmino");
list.add("Lovren");
list.add("Steven Gerrard");
list.add("Karius");
list.add("Mo Salah");
for(int i =0; i < list.size(); i++) {
if list.contains(list.get(i)) {
System.out.println(list.get(i)+" is duplicated")
}
}
Run Code Online (Sandbox Code Playgroud)
这应该打印“karius is duplicated”
我有两个需要比较和操作的大型(1000多个对象)ArrayList。我本质上需要从ArrayList A中获取一个值,在ArrayList B中查找匹配的对象,然后从B中操作该对象。我需要在A的所有对象中执行此操作。我需要在应用程序中经常执行此操作。订单未知,大小会有所不同。
(pseudocode)
ArrayList<myObject> A
ArrayList<myObject> B
Run Code Online (Sandbox Code Playgroud)
对于A中的每个实体,我都可以遍历B中的每个单个项目,寻找与A中的实体匹配的项目。这似乎效率很低。
(pseudocode)
for (each object in A){loop through all of B and find it}
Run Code Online (Sandbox Code Playgroud)
值得将B转换为HashMap(使用我正在比较的特定值作为键,将对象作为值),然后以这种方式搜索B,然后在完成处理后将该临时HashMap转换回ArrayList。 ?
(pseudocode)
convert B to HashMap<myObject.myValue,myObject> C
for (each object in A){look up the value in C}
convert C back to an ArrayList
Run Code Online (Sandbox Code Playgroud)
这是一个好主意吗?还是这种过早/不必要的优化?谢谢。
(背景:数据从服务中以ArrayList的形式从我那里得到-前端需要一个ArrayList用于视图层。我试图使中间层的处理效率更高-但是入口和出口对象必须是ArrayList(或某些对象)其他清单))