select class 个对象字段的数组
select array of class objects field
我有一个枚举和一个包含两个字段的 class:
enum types {
nan,
num,
text,
col,
dress
};
class GeneType {
String name;
types type;
GeneType(String name, types type) {
this.name = name;
this.type = type;
}
}
我还有一些对象正在使用这个 class
final GeneType[][] geneNames = new GeneType[][]{
{
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
},
{
new GeneType("Unknown", types.nan),
new GeneType("Not Sure", types.nan),
new GeneType("This", types.nan),
new GeneType("That", types.nan),
new GeneType("The other", types.nan),
new GeneType("Eye color", types.col),
new GeneType("Fav color", types.col),
new GeneType("Name", types.text)
}
}
我想使用最简单的方法设置选项卡名称 (String[])select 名称数组
new Tabs(x, y, wid, hei, orientation, thingsToShow,
geneNames[howMuchDataNeed(thingsToShow.size())].name)
thingsToShow 是 otherClass 的数组列表
如何 select array of geneNames[index].name?
试试这个。
int index = 1;
String[] names = Arrays.stream(geneNames[index])
.map(gene -> gene.name)
.toArray(String[]::new);
System.out.println(Arrays.toString(names));
输出:
[Unknown, Not Sure, This, That, The other, Eye color, Fav color, Name]
从 geneNames[index]
您将根据您提供的 index
值获得内部数组之一。例如,如果调用 geneNames[0]
,您将得到以下数组作为结果。
[
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
]
那么你需要的是映射这个GeneType
对象数组到它们对应名称的数组。为此,您可以使用 Java 的 stream
API,如下所示。
String[] names = Arrays.stream(geneNames[index])
.map(gene -> gene.name)
.toArray(String[]::new);
更新: 不使用 Java stream
API 的实现
GeneType[] selected = geneNames[index];
String[] names = new String[selected.length];
for (int i = 0; i < selected.length; i++) {
names[i] = selected[i].name;
}
您可以使用 GeneType class 中的 toString() 覆盖方法来完成此操作。
希望这段代码能帮到你。
import java.util.ArrayList;
import java.util.Arrays;
enum types {
nan,
num,
text,
col,
dress
};
class GeneType {
String name;
types type;
GeneType(String name, types type) {
this.name = name;
this.type = type;
}
@Override
public String toString() {
return name;
}
}
class question {
public static void main(String[] args) {
final GeneType[][] geneNames = new GeneType[][]{
{
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
},
{
new GeneType("Unknown", types.nan),
new GeneType("Not Sure", types.nan),
new GeneType("This", types.nan),
new GeneType("That", types.nan),
new GeneType("The other", types.nan),
new GeneType("Eye color", types.col),
new GeneType("Fav color", types.col),
new GeneType("Name", types.text)
}
};
ArrayList<GeneType> names = new ArrayList<>();
for (int i = 0; i < geneNames[0].length; i++) {
names.add(geneNames[0][i]);
}
System.out.println(names);
}
}
这可能不是最佳选择,但它通过了。
String[] SelectNames(){
GeneType[] carry = geneNames[index];
String[] toReturn = new String[carry.length];
for(int i=0; i<toReturn.length; i++)
toReturn[i]=carry[i].name;
return toReturn;
}
我有一个枚举和一个包含两个字段的 class:
enum types {
nan,
num,
text,
col,
dress
};
class GeneType {
String name;
types type;
GeneType(String name, types type) {
this.name = name;
this.type = type;
}
}
我还有一些对象正在使用这个 class
final GeneType[][] geneNames = new GeneType[][]{
{
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
},
{
new GeneType("Unknown", types.nan),
new GeneType("Not Sure", types.nan),
new GeneType("This", types.nan),
new GeneType("That", types.nan),
new GeneType("The other", types.nan),
new GeneType("Eye color", types.col),
new GeneType("Fav color", types.col),
new GeneType("Name", types.text)
}
}
我想使用最简单的方法设置选项卡名称 (String[])select 名称数组
new Tabs(x, y, wid, hei, orientation, thingsToShow,
geneNames[howMuchDataNeed(thingsToShow.size())].name)
thingsToShow 是 otherClass 的数组列表
如何 select array of geneNames[index].name?
试试这个。
int index = 1;
String[] names = Arrays.stream(geneNames[index])
.map(gene -> gene.name)
.toArray(String[]::new);
System.out.println(Arrays.toString(names));
输出:
[Unknown, Not Sure, This, That, The other, Eye color, Fav color, Name]
从 geneNames[index]
您将根据您提供的 index
值获得内部数组之一。例如,如果调用 geneNames[0]
,您将得到以下数组作为结果。
[
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
]
那么你需要的是映射这个GeneType
对象数组到它们对应名称的数组。为此,您可以使用 Java 的 stream
API,如下所示。
String[] names = Arrays.stream(geneNames[index])
.map(gene -> gene.name)
.toArray(String[]::new);
更新: 不使用 Java stream
API 的实现
GeneType[] selected = geneNames[index];
String[] names = new String[selected.length];
for (int i = 0; i < selected.length; i++) {
names[i] = selected[i].name;
}
您可以使用 GeneType class 中的 toString() 覆盖方法来完成此操作。 希望这段代码能帮到你。
import java.util.ArrayList;
import java.util.Arrays;
enum types {
nan,
num,
text,
col,
dress
};
class GeneType {
String name;
types type;
GeneType(String name, types type) {
this.name = name;
this.type = type;
}
@Override
public String toString() {
return name;
}
}
class question {
public static void main(String[] args) {
final GeneType[][] geneNames = new GeneType[][]{
{
new GeneType("Unknown", types.nan),
new GeneType("Age", types.num),
new GeneType("Fav number", types.num),
new GeneType("Height", types.num),
new GeneType("Name", types.text)
},
{
new GeneType("Unknown", types.nan),
new GeneType("Not Sure", types.nan),
new GeneType("This", types.nan),
new GeneType("That", types.nan),
new GeneType("The other", types.nan),
new GeneType("Eye color", types.col),
new GeneType("Fav color", types.col),
new GeneType("Name", types.text)
}
};
ArrayList<GeneType> names = new ArrayList<>();
for (int i = 0; i < geneNames[0].length; i++) {
names.add(geneNames[0][i]);
}
System.out.println(names);
}
}
这可能不是最佳选择,但它通过了。
String[] SelectNames(){
GeneType[] carry = geneNames[index];
String[] toReturn = new String[carry.length];
for(int i=0; i<toReturn.length; i++)
toReturn[i]=carry[i].name;
return toReturn;
}