Mar*_*alo 2 java data-structures
我来自C#背景,我正试图弄清楚如何在C#中使用它们的方式.如果这不是在Java中使用它们的方式,我想知道正确的方法.
基本上,这就是我想要做的:
这是我到目前为止的尝试:
这是我想要的类对象:
public class ClassName
{
public ClassName(String _str, int _a, int _b, int _c, int _d, long _e)
{
str = _str;
a = _a;
b = _b;
c = _c;
d = _d;
e = _e;
}
public String str;
public int a;
public int b;
public int c;
public int d;
public long e;
}
Run Code Online (Sandbox Code Playgroud)这是它在主类文件中引用的方式:
// Why would I use this instead of List<T>?
ArrayList<ClassName> hList = new ArrayList<ClassName>();
Run Code Online (Sandbox Code Playgroud)这就是我试图填充类对象的方式:
hList.add(new ClassName("string", 1, 2, 3, 4, 2432342322));
Run Code Online (Sandbox Code Playgroud)这是我在Eclipse中遇到的错误:
The constructor ClassName(String, int, int, int, int, long) is undefined
......这令人费解.Eclipse要求我添加我已经添加的内容.当我选择"快速修复"选项时,它与上面的构造函数做同样的事情,但没有type = type东西.也许我没有正确处理这个问题?
假设这是迭代的正确方法,这就是我认为可行的方法:
for (int i = 0; i < hList.size(); i++)
{
System.out.println(hList[i].currentDate);
}
Run Code Online (Sandbox Code Playgroud)
那么,我如何创建一个正确的列表并在Java中迭代它?
public ClassName(string _str, int _a, int _b, int _c, long _d)
{
str = _str;
a = _a;
b = _b;
c = _c;
d = _d;
}
Run Code Online (Sandbox Code Playgroud)
使用下划线命名并不常见.我推荐使用this.此外,String大写,大括号通常在行的末尾.
public ClassName(String str, int a, int b, int c, long d) {
this.str = str;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
Run Code Online (Sandbox Code Playgroud)
// Why would I use this instead of List<T>?
ArrayList<ClassName> hList = new ArrayList<ClassName>();
Run Code Online (Sandbox Code Playgroud)
一个更通用的类型,如List,Collection或Iterable在左侧更好,与C#相同.我建议反对匈牙利表示法:list优先于hList.此外,您可以省略右侧类型名称并使用菱形运算符(<>)来推断类型.
List<ClassName> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
构造函数
ClassName(String, int, int, int, int, long)未定义.
你的构造函数有三个ints和一个long; 你试图传递四个int和一个long.
假设这是迭代的正确方法,这就是我认为可行的方法:
Run Code Online (Sandbox Code Playgroud)for (int i = 0; i < hList.size(); i++) { System.out.println(hList[i].currentDate); }
如果您不需要索引变量,则每个循环的A更好i.
for (ClassName item: list) {
System.out.println(item.currentDate);
}
Run Code Online (Sandbox Code Playgroud)
如果你想要,i那么[i]改为.get(i).Java没有运算符重载,因此[]仅在数组上可用,而不是类或接口List.
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).currentDate);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10184 次 |
| 最近记录: |