如何将arraylist转换/转储到列表中?我正在使用arraylist因为我正在使用ASP.NET配置文件功能,在配置文件中存储List看起来很痛苦.
注意:另一个选项是将List包装到自己的类中并取消ArrayList.
http://www.ipreferjim.com/site/2009/04/storing-generics-in-asp-net-profile-object/
我有9个不同ArrayList,我想有一个前5名的清单.
我正在考虑ArrayLists按尺寸对它们进行分类.
有可能吗?如果是这样,我怎么能实现呢?
经过几次尝试后我终于开始工作,只想与大家分享.
最好是获得arraylist的大小并将其添加到大型arraylist
// creates an ArrayList that holds ArrayLists
List allTheLists = new ArrayList();
allTheLists.add(pbaustraliaList.size());
allTheLists.add(pbotherList.size());
allTheLists.add(pbunitedStatesList.size());
allTheLists.add(pbunitedKingdomList.size());
allTheLists.add(pbchinaList.size());
allTheLists.add(pbgermanyList.size());
allTheLists.add(pbindiaList.size());
allTheLists.add(pbjapanList.size());
allTheLists.add(pbsingaporeList.size());
Comparator comparator = Collections.reverseOrder();
Collections.sort(allTheLists,comparator);
//display elements of ArrayList
System.out.println("ArrayList elements after sorting in descending order : ");
for(int i=0; i<allTheLists.size(); i++) {
System.out.println(allTheLists.get(i));
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含一些UserID的数组列表.我需要这样的查询:
vat tmp= users.select(a=> a.UserID in (arraylist));
Run Code Online (Sandbox Code Playgroud)
我能做什么?
我有一个代码从一些分页字符串数据读取列表.我不明白 - 为什么在addAll()上抛出UnsupportedOperationException以及为什么它是随机行为?
我知道创建目标ArrayList并且不添加到返回的那个解决了问题,我正在寻找更好的理解而不是修复.
List<Event> eventList = eventTable.getEvents(); // returns ArrayList
while (hasNextPage()) {
goToNextPage();
eventList.addAll(eventTable.getEvents());
}
Run Code Online (Sandbox Code Playgroud) ArrayList如果符合某个条件,我想从Java中删除一个元素.
即:
for (Pulse p : pulseArray) {
if (p.getCurrent() == null) {
pulseArray.remove(p);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以理解为什么这不起作用,但是这样做的好方法是什么?
为什么LinkedList与ArrayList扩展AbstractList中的Java?
当我们想要在实现类中指定公共行为时,使用抽象类.
但是所有的方法AbstractList都被ArrayList和被覆盖了LinkedList.
那么扩展这个类有什么用呢?
我正在阅读关于Java Generics的这篇文章,并且在那里提到了一个ArrayList看起来像这样的构造函数:
class ArrayList<V> {
private V[] backingArray;
public ArrayList() {
backingArray = (V[]) new Object[DEFAULT_SIZE];
}
}
Run Code Online (Sandbox Code Playgroud)
我无法理解编译器的类型擦除和类型检查是如何解释的那样.我得到的一点是type参数转换为Objecttype.
我将它想象成(更换所有V带Object),但是这肯定是不对的.
class ArrayList<Object> {
private Object[] backingArray;
public ArrayList() {
backingArray = (Object[]) new Object[DEFAULT_SIZE];
}
}
Run Code Online (Sandbox Code Playgroud)
它究竟是如何转变为Object类型但仍保留类型安全性的V?当我有ArrayList<String>和ArrayList<Integer>是否有两种不同类型的每一个?如果没有,在哪里类型的信息String和Integer存储?
我正在尝试研究JavaFX,因为我想将它用作我程序的GUI.我的问题基本上是一个概念问题:
到目前为止,我的程序主要是MVC模式的"模型"部分; 也就是说,我的几乎所有代码都是类的意义上的抽象的OO表示,所有代码都是逻辑代码.
由于我不想成为我的程序的唯一用户,我想添加MVC的"视图"部分,以便人们可以轻松地使用和操作我的程序的"模型"部分.为此,我想使用JavaFX.
在我的"Model"类中,我显然使用了Java Collections API中的各种Lists,Maps和其他类.为了让我的程序的用户操作这些底层列表和地图,我想在JavaFX中使用Observable(List/Map)接口.
澄清情况的具体例子:
假设我有一个MachineMonitor类,每3分钟检查一次机器的某些属性,例如连接是否仍然良好,齿轮转动的速度等等.如果满足某些不等式(比如说速度)齿轮下降到1转/秒的速度)MachineMonitor触发RestartMachineEvent.
目前我使用ArrayList < MachineMonitor >来跟踪所有单独的MachineMonitor.现在扩展到MVC的"视图"部分,我希望用户能够操作显示MachineMonitor列表的TableView,以便他们可以创建和删除新的MachineMonitor来监视各种机器.
这样我就可以跟踪我的程序用户想要做什么(比如,为机器#5 创建一个MachineMonitor,检查齿轮的转/秒是否低于0.5)我使用ObservableList < MachineMonitor > TableView的基础列表.
链接程序的"模型"和"视图"的最简单方法就是将"模型"类更改为具有ObservableList < MachineMonitor >而不是ArrayList < MachineMonitor >但是(转到问题主题)我觉得这非常混乱,因为它混合了"模型"和"查看"代码.
一种天真的方法是对TableView 使用ObservableList < MachineMonitor >并保留我的ArrayList < MachineMonitor >的使用.但是,根据JavaFX规范,对ObservableList < MachineMonitor >所做的更改不会影响基础List.
鉴于此,是为了解决这一难题,以便为ObservableList一个ChangeListener的最佳方式< MachineMonitor >该"传播"到ObservableList <所做的更改MachineMonitor >到底层"模型"的ArrayList < MachineMonitor >?也许把它放在一个名为MachineMonitorController的类中?
这种临时解决方案看起来非常混乱且非理想.
我的问题是:在这种情况下,保持"模型"和"视图"之间几乎完全分离的最佳方法是什么?
我正在尝试使用BaseAdapter创建一个列表视图,并且在将对象添加到ArrayList时我不断获得Null对象引用错误.
相关代码如下:
public class MainActivity extends ActionBarActivity {
int[] icons = {R.drawable.icon01, R.drawable.icon02, R.drawable.icon03, R.drawable.icon04, R.drawable.icon05, R.drawable.icon06, R.drawable.icon07, R.drawable.icon08, R.drawable.icon09, R.drawable.icon10, R.drawable.icon11, R.drawable.icon12};
ListView listView;
String[] title, desc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
Resources resources = getResources();
title = resources.getStringArray(R.array.titles);
desc = resources.getStringArray(R.array.desc);
RT_Adapter rt_adapter = new RT_Adapter(this, title, desc, icons);
listView.setAdapter(rt_adapter);
}
}
class Creator {
String a, b;
int c;
Creator(String d, String e, int f) {
this.a = d;
this.b …Run Code Online (Sandbox Code Playgroud) 假设我有这个代码:
String[] left = { "1", "2" };
String[] leftNew = Collections.emptyList().toArray(left);
System.out.println(Arrays.toString(leftNew));
Run Code Online (Sandbox Code Playgroud)
这将打印[null, 2].这个排序是有道理的,因为我们有一个空列表它是某种假设来处理那些我们传递一个数组,它是更大的,并设置为空的第一个元素的事实.这可能是说第一个元素在空列表中不存在,因此设置为null.
但这仍然令人困惑,因为我们传递一个具有某种类型的数组只是为了帮助推断返回数组的类型; 但无论如何,这是至少具有某种逻辑的东西.但是,如果我这样做:
String[] right = { "nonA", "b", "c" };
// or Collections.singletonList("a");
// or a plain List or Set; does not matter
String[] rightNew = Collections.singleton("a").toArray(right);
System.out.println(Arrays.toString(rightNew));
Run Code Online (Sandbox Code Playgroud)
以上一个例子为参考,我希望这个例子能够显示:
["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
但是,对我来说有点意外,它打印:
[a, null, c]
Run Code Online (Sandbox Code Playgroud)
当然,我会转到明确说明这是预期的文档:
如果此集合适合指定的数组,并且有空余空间(即,数组的元素多于此集合),则紧跟集合结尾的数组中的元素将设置为null.
好的,好的,至少记录在案.但它后来说:
仅当调用者知道此集合不包含任何null元素时,这在确定此集合的长度时非常有用.
这是文档中最让我困惑的部分:|
一个更有趣的例子对我来说没什么意义:
String[] middle = { "nonZ", "y", "u", "m" };
List<String> list = new ArrayList<>();
list.add("z"); …Run Code Online (Sandbox Code Playgroud) arraylist ×10
java ×8
collections ×2
generics ×2
list ×2
.net ×1
android ×1
asp.net ×1
baseadapter ×1
constructor ×1
exception ×1
javafx ×1
linked-list ×1
linq ×1
object ×1
sorting ×1