对不起,我认为这是一个继承问题:它一直是一个ArrayList问题!
好吧,我的问题比我想象的更具体.所以我有两个班级.卡片和区域.区域是持卡的盒子.
Zone,ZoneList和ZoneMap的前两个子类是存储卡的两种不同方式.其他子类,如Hand和PokerHand,有自己特定的方式处理他们存储的卡片.
复杂的地方就是Card也有子类,比如PokerCard,而ZoneList和ZoneMap的子类就是为了组织它们.
所以在ZoneList中,我protected ArrayList<Card> cardBox;和PokerHand一直希望能够申报,cardBox = new ArrayList<PokerCard>();因为PokerCard是一张卡.我得到的错误是,当涉及到ArrayLists时,我显然无法在Card和GangCard之间施放......所以我试图通过将cardBox重新声明为PokerHand private ArrayList<PokerCard> cardBox;内部来解决这个问题,但这导致了隐藏的问题我的节目.
那么,问题是关于在ArrayLists之间进行转换?Java告诉我,我不能,所以任何关于我如何的想法?
ž.
在TreeSet中有一个名为contains的方法,如果元素在集合中,则返回true.我假设此方法使用二进制搜索,并不按升序迭代所有元素.我对吗?
我有一个TreeSet,它包含一个类的对象,该类使用两个String实例变量来区分它与同一个类的其他对象.我希望能够通过比较两个实例变量(当然使用get方法)和另外两个String变量来创建一个搜索TreeSet的方法,如果它们相等,则返回该元素.如果实例变量小于转到右子树中的第一个元素,或者如果它们在左子树中搜索更大等等.有没有办法做到这一点?
我知道我可以将对象存储在ArrayList中并使用二进制搜索来查找对象,但这不会像搜索TreeSet那么快.
是否可以在ArrayList中存储对象类型的混合?如果是这样的话?
这是我到目前为止所尝试的:
List<Object> list = new ArrayList<Object>();
list.add(new String("Hello World"));
list.add(new Integer(1));
list.add(new Long(1l));
for (i = 0; i < list.size(); i++) {
if (list.get(i) instanceof String){
sqlPreparedStatement.setString((i+1), (String) list.get(i));
} else if (list.get(i) instanceof Integer) {
sqlPreparedStatement.setInt((i+1), (Integer) list.get(i));
} else if (list.get(i) instanceof Long) {
sqlPreparedStatement.setLong((i+1), (Long) list.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一个铸造异常.
提前感谢任何输入!
我想将一个对象集合添加到arrayList,只有当特定属性不为null时.
我正在考虑扩展ArrayList并在子类中实现检查.
另一种方法是在将它放入Arraylist之前检查属性,但这意味着,如果我需要根据逻辑将对象添加到arraylist,我必须分散if检查每个位置.
我想知道你对它的看法......再想一想,这是一种矫枉过正吗?
在正常的数组列表初始化中,我们用于定义泛型类型如下,
List<String> list1 = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
但是对于ArrayLists的ArrayList,我们如何定义其泛型类型?
数组列表数组列表的代码如下:
ArrayList[] arr=new ArrayList[n];
for(int i=0;i<n;i++)
{
arr[i]=new ArrayList();
}
Run Code Online (Sandbox Code Playgroud)
只要分享语法,如果有人知道它...!
好的,我想从JTable的第一列获取所有数据.我虽然最好的办法是把它拉进去ArrayList,所以我做了一个.我还做了一个例子TableModel:
static DefaultTableModel model = new javax.swing.table.DefaultTableModel();
f.data.setModel(model); //f.data is the JTable
public static final void CalculateTotal(){
ArrayList<String> numdata = new ArrayList<String>();
for(int count = 1; count <= model.getRowCount(); count++){
numdata.add(model.getValueAt(count, 1).toString());
}
System.out.println(numdata);
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个NullPointerException(提示尖叫).我究竟做错了什么?
我目前正在攻读Java OCA考试,并遇到了一个与ArrayList声明有关的问题.
以下哪项有效?:
Run Code Online (Sandbox Code Playgroud)1. ArrayList al1 = new ArrayList(); 2. ArrayList al2 = new ArrayList<>(); 3. ArrayList<> al3 = new ArrayList<>(); 4. ArrayList<Double> al4 = new ArrayList<>(); 5. ArrayList<Double> al5 = new ArrayList<Float>();
根据我的书,答案1,2和4是有效的.答案3和5无效.
但是,没有给出适当的解释.它所做的就是显示声明ArrayList的标准方法:
ArrayList<E> al3 = new ArrayList<E>();
Run Code Online (Sandbox Code Playgroud)
并且提到声明没有通用部分的ArrayList也是有效的.
我也无法在网上找到关于这个主题的好文章.有人可以解释(或指向一篇好文章的方向)上面的不同排列吗?
提前致谢.
我正在尝试创建某种列表来存储数组'table'中的值.(我在这里使用arraylist,但是我应该使用列表吗?)但是,每次我尝试编译时,都会抛出以下错误:
找不到符号符号:class ArrayList location:class players.TablePlayer
代码如下.
public class TablePlayer extends Player {
int[][] table;
ArrayList goodMoves;
public TablePlayer(String name) {
super(name);
}
@Override
public int move() {
int oppLast = opponentLastMove();
int myLast = myLastMove();
if (!isLegalMove(oppLast)) {
return 0; // temporary
}
if (wonLast()) {
table[oppLast][myLast] = 1;
table[myLast][oppLast] = -1;
}
if ((wonLast() == false) && (oppLast != myLast)) {
table[oppLast][myLast] = -1;
table[myLast][oppLast] = 1;
}
for (int i = 0; i < table.length; i++) {
for …Run Code Online (Sandbox Code Playgroud) 关于:我的数学程序将有一个巨大的项目集合来迭代.它主要由一个项和一个指向另一个项((int)item,(int)指针)的指针组成,类似于一个键值对.但是,每个项目都有其他几个属性,如下所示:
(项目,指针),(属性,属性,属性......)
项目,指针和属性将经常添加.
搜索这个网站和其他网站让我对这个程序使用的集合更加无能为力.
此时在vcskicks.com上找到的词典解决方案似乎效果最好:
Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary =
new Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary();
Run Code Online (Sandbox Code Playgroud)
或用简明的语言:
Dictionary<Dictionary<item, pointer>,
Dictionary<attribute,attribute, ...> nestedDictionary =
Dictionary<Dictionary<item, pointer>,
Dictionary<attribute,attribute, ...>();
Run Code Online (Sandbox Code Playgroud)
请注意,属性数量未预定义,长度不同.此时此刻由于性能开销,我不愿意使用对象.
Hashsets似乎不适合,因为重复的项目将存在,但它们将具有不同的属性.或者一个hashset可以有重复的项目,但只是没有重复的hashkeys?似乎有些混乱.
根据一些以下hashset将无法计算:
11011, 0001
11011, 0011
Run Code Online (Sandbox Code Playgroud)
根据其他人的意见,因为它将有一个不同的哈希键.这让我感到困惑.
我的问题:
有可能变得模糊:使用哪种收集类型最好?如有必要,我很乐意为故事添加更多内容.
编辑:
巨人意味着:可能有数百万件物品.所有项目都有一个指针和属性. 一般用途是搜索特定项目,检索指针,获取下一个指针的项目,直到没有指针为止.同时收集每个项目的所有属性.添加将定期进行,仅偶尔删除. 指针:指针是它引用的项目的索引.如果您有2个项目,并且第一个项目链接到第二个项目,则第一个项目将第二个项目的索引作为指针. 最佳定义为内存使用和速度.最后,所有找到的项目将相互比较. 例:
[Item , pointer] [attribute, attribute, ...]
[11011, 1001] [ 1101, 1111 ]
[10001, 1000] [ 1110, 0101 ]
[11111, 0010] …Run Code Online (Sandbox Code Playgroud) 很久以前,我观看了普林斯顿Coursera MOOC:算法简介的视频讲座,可以在这里找到.它解释了ArrayList在添加或删除元素时调整类似结构的成本.事实证明,如果我们想要为我们的数据结构提供调整大小,我们将从for O(n)到amortized O(n)for add和removeoperation.
我已经使用Java ArrayList几年了.我一直都很确定它们会自动增长和缩小.就在最近,令我惊讶的是,我在这篇文章中被证明是错误的.Java ArrayList不会自动缩小(当然,它们会增长).
这是我的问题:
在我看来,提供ArrayLists 缩小不会造成任何伤害,因为性能已经存在amortized O(n).为什么Java创建者没有将此功能包含在设计中?
我知道像HashMaps 这样的其他数据结构也不会自动收缩.Java中是否有其他数据结构构建在支持自动收缩的数组之上?
其他语言的趋势是什么?如果列表,字典,映射,集合在Python/C#等中,自动收缩怎么样?如果它们与Java的作用方向相反,那么我的问题是:为什么?
arraylist ×10
java ×9
generics ×2
abstraction ×1
c# ×1
casting ×1
collections ×1
dictionary ×1
hashset ×1
jtable ×1
list ×1
loops ×1
mixed ×1
resize ×1
reusability ×1
swing ×1
treeset ×1