Tag: arraylist

将JSON解析为自定义ArrayList,仅返回最后一项?

我发现这有点奇怪,我正在从我的/ assets文件夹中的文件解析一些JSON。 我已经设置了一个自定义ArrayList。 现在,当我尝试将ArrayList中的数据添加到listview或spinner(Same adapter)时,它只显示最后一项。 这是我的代码: 我的解析方法: public ArrayList parseJSON(String json) { ArrayList shop = new ArrayList(); ShopName item = new ShopName(); Log.d(TAG, json); try { JSONArray jArray = new JSONArray(json); for (int i=0; i < jArray.length();i++) { JSONObject jObject = jArray.getJSONObject(i); item.setFromCurrency(jObject.getString("from")); item.setToCurrency(jObject.getString("to")); item.setRate(jObject.getString("cost")); data.add(item); } } catch (JSONException jen) { jen.printStackTrace(); } return […]

将“路径”从2Darrays网格存储到列表中

在我用JLabel制作的2D网格作为单元格时,我让单元格的邻居形成一个“路径”,然后在该路径之后绘制一个多边形,其中单元格的中心为点。 我使用一个分层窗格(JPanel)将两个面板一个放在另一个上面以便能够绘制多边形和一个GridBagLayout以允许将两个组件一个放在另一个上面。 一切都按预期工作。 问题是,每当我点击一个空单元格时,前一条路径就会被清除,同时也会清除多边形。 但是不清除单元格内容。 现在,我希望将已绘制的路径/多边形保存在列表中,以便可以再次重新绘制它们。 我希望有一个类似“历史”的东西,它将包含所有找到的路径。 有关如何实现这一点的任何想法? 在路径之后绘制的多边形由位于该路径中包含的单元格中心的点(JLabel)形成: Point[] polygon = new Point[path.size()]; //calculate points to construct lines along the path for(int[] address : path) { //get cell location (row / col) int row = address[0]; int col = address[1]; //get label in that location JLabel label = grid[row][col]; //add center of label as […]

Java Swing:将鼠标hover在矩形上时,光标响应非常慢

下面是用户将鼠标光标移动到一堆矩形上的代码,光标应该在矩形上方变为手形光标,并在不在给定矩形顶部时恢复为默认正常光标。 问题:解决方案有效,但速度很慢。他们有很多方法可以“给猫皮肤”,因此我们可以在很多方面对问题进行建模,解决方案可以是各种各样的,但不变的是,我们必须循环每个矩形使用迭代器并使用contains()方法确定JPanel上的给定点是否确实在矩形内,并相应地更改光标。 就像需要实现声音一样简单,即在hover在特定矩形上时更改光标,程序开始变慢,因为我添加了不同的形状和更多的矩形。 下面的代码简单地显示了与x轴对齐的矩形和与y轴对齐的矩形。我将它们 (仍然可以将它们组合成一个列表)分成两个矩形列表。我用一个while循环迭代两个列表另一个,每个都在适当的地方使用break关键字。 我避免只使用一个大型列表来保存两种类型的矩形(或不同类型的形状),因为 我需要每隔一段时间添加不同的形状,并且它更好,更易读,可以在自己的列表中分类不同的形状。 我本能地试图通过对不同的形状使用不同的列表来缩短漫长的过程, 如果可能的话 ,只迭代正确的列表而不是迭代其他不必要的形状。一个大的列表将线性增长并迭代***所有塑造***以一直***到正确的***。***一个大的列表似乎不是一个如此聪明的实现? 希望尽我所能避免One-Large-List的努力不是过早优化的情况!!!这一点我认为使用线程同时或同时循环遍历不同的列表但是一个线程行为不端。 那么,我将形状分类在不同的List中,因为下面的示例有两个Lists.but这个技巧也失败了,因为我必须按顺序遍历每个列表。所以我在另一个列表中有一个while循环。我没有避免迭代不必要的列表,因为一个循环必须在另一个循环中(或者从另一个循环开始),那么内循环(或后面的循环)会支付过度的性能开销,因为如果我们可以事先确定一个形状属于一个形状,那么第一个循环是完全没有必要的。手上的某个组。请注意,确定鼠标光标是否hover在属于圆形列表或矩形列表的形状上,是我们事先需要知道的! 这样我们就可以遍历特定的列表。 它甚至变得更好,如果在这一点上你仍然可以按照我的推理, 事先知道哪个List属于一个必须在没有contains()方法的情况下完成,因为在List 内部迭代时要使用contains()! ! 总而言之,下面的代码只是两个列表上的线性迭代。 要访问第二个List,你必须通过第一个。有没有办法可以先通过迭代第一个列表? 如果我所有的解释和探索都是错误的并且没有意义。 题。 那么,如何改进下面代码的光标响应。 编辑 很抱歉发布了无法编译的代码,我已经从这个代码片段开始,并且正在玩我的新玩具,称为线程,直到我最终将自己绑在一个我无法解开的结中。真相是我选择的线程,因为我希望选择矩形并使用setRect()方法移动它们。我设想在预定的运动中移动各种形状,即仿射转换可能需要线程,因为我的绘画,重新绘制,搜索和各种努力工作从一些multithreading中受益。总之,下面的代码编译,光标响应实际上是好的! 。哎哟! 我有一个类似的实现,但可能它的缓慢是由绘制矩形的其他类引起的,不像在这个SSCCE中,它们由for循环绘制。 同时,如果有人有办法通过线程获得这种良好的性能,那将非常感激。谢谢提前。 import java.awt.Color; import java.awt.Cursor; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.*; […]

在两个arraylists之间交替。

我无法让这个东西运行。 我不确定到目前为止我的情况是否正确。 我不太确定在哪里给我一个出界的错误。 以下是说明: 编写一个名为interleave的方法,它接受两个整数a1和a2的ArrayLists作为参数,并在交替索引处将a2的元素插入a1。 如果列表的长度不相等,则较长列表的其余元素将保留在a1的末尾。 例如,如果a1存储[10,20,30]和a2存储[4,5,6,7,8],则调用interleave(a1,a2); 应该改变a1来存储[10,4,20,5,30,6,7,8]。 如果a1已存储[10,20,30,40,50]并且a2已存储[6,7,8],则交错调用(a1,a2); 会改变a1来存储[10,6,20,7,30,8,40,50]。 private static void interleave(ArrayList a1, ArrayList a2) { int i = a1.size(); int j = a2.size(); if (i < j) { // a1 is shorter than a2 for (int k = 0; k < a1.size(); k++) { // before k passes a1 size a1.add(k+1, a2.get(k)); […]

ArrayList内容到JLabel

如果我有一个类型为Integer的ArrayList,包含1,3,4,9,10之类的数字…我怎么能在JLabel上显示那些,而不是总和,而是序列中的所有数字。 所以JLabel会显示,在这种情况下:134910 预先感谢您的任何帮助。 编辑:谢谢大家,当然我应该考虑追加。 无论如何,谢谢大家!

在Java中创建多个数据类型的数组列表

我正在使用的一些文件: http : //pastebin.com/WriQcuPs 目前我不得不制作人口,纬度和经度字符串,否则我就无法获得所需的输出。 我希望他们按顺序为int,double和double。 public class City { String countrycode; String city; String region; String population; String latitude; String longitude; public City (String countrycode, String city, String region, String population, String latitude, String longitude) { this.countrycode = countrycode; this.city = city; this.region = region; this.population = population; this.latitude = latitude; this.longitude = longitude; […]

Android将Arraylist数据设置为自定义适配器

我有一个ArrayList statusListTextOnly; 包含一些推文。 现在,如果我像这样使用它 i.setAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, statusListTextOnly)); 一切都很好,活动开始,推文在listview中显示。 但我想深入了解我的应用,我想使用自定义适配器。 所以我做了: Tweet[] tweets; TweetAdapter adapter; Tweet weather_data[] = new Tweet[] { new Tweet(statusListTextOnly) }; adapter = new TweetAdapter(MainAcitivity.this, R.layout.listview_item_row, weather_data); i.setAdapter(adapter); 我的推文: public class Tweet { public String title; public Tweet(){ super(); } public Tweet(ArrayList title) { super(); for(String s : title) this.title = s; […]

ArrayList空指针exception

我创建了一个arraylist和一个ListView。 我打算遍历ListView,并检查它们是否被选中,然后将对象(使用ListView.getItem())添加到我的arraylist。 但是我得到一个NullPointerException。 ArrayList people_selected,在类的顶部声明如下: ArrayList selected_people; 我的代码: for (int i = 0; i < people_list.getCount(); i++) { item_view = people_list.getAdapter().getView(i, null, null); chBox = (CheckBox) item_view.findViewById(R.id.checkBox);//your xml id value for checkBox. if (chBox.isChecked()) { selected_people.add((PeopleDetails) people_list.getItemAtPosition(i)); } } for(PeopleDetails person : selected_people){ SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(person.number, null, sms_message, null, null); } ///and now […]

使用ArrayList存储变量

我正在编写一个项目来存储一个对象数组,可能是在一个arraylist中。 所以,我的对象有数据元素,getter和setter。 我不知道如何访问对象的元素。 例如,我的对象是一本书,其中包含以下数据元素。 Book ->Author ->Price ->Date 如果某本书的价格发生变化,我该如何更新arrayList? 我需要一个2d arrayList吗? 我认为indexOf不起作用,因为它是一个对象? 不太确定。 我只是编程的新手,所以我不确定arrayList是否是正确的数据结构。 非常感谢您阅读本文,我们将非常感谢您的帮助。

比较和检索ArrayList中的元素

我正在尝试构建一个简单的字典,将字符串与ArrayList上的单词进行比较,然后从列表中返回一个不同的值。 ArrayList用外来单词排列,然后是英语等价物,所以想法是我输入一个单词,使用scanner将它与数组列表进行比较,然后返回索引值+1,如果单词I类型在列表中排名第7,我希望它返回第8个单词并将其打印出来。 我已经有了输入字符串并进行比较的基本思路,但我不知道如何从ArrayList返回以下单词: public void translateWords(){ String nameSearch; nameSearch=input.nextLine(); for (Phrase c:phrases) { if (c.getName().equals(nameSearch)) { System.out.println( c.advancedToString()); return; } } System.out.println(“not on list”); 我已经尝试过使用ArrayList的get方法,但我不确定如何使用它,所以任何反馈都会非常感激。