java中如何把一个不同类型的数据放到list中去 在线等~~~

时间:2022-02-05 19:34:08
private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();

while(line!=null){
sendConfirm();
  System.out.println(line);
}

return list;

}


这里我读一行String类型的数据,然后要加到list里,list是MatchedLogRec类型的,我该怎么做??

25 个解决方案

#1


List<Object>

#2


引用 1 楼 zhouyuqwert 的回复:
List<Object>

让我把数据放到这里面去?

#3


引用 1 楼 zhouyuqwert 的回复:
List<Object>

   创建一个MatchedLogRec对象~~~!!!
   在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!

#4


private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
sendConfirm();
l.add(line);
  System.out.println(line);
}
list.addAll((Collection<? extends MatchedLogRec>) l);

return list;

}

按照1楼的想法,我这么做行么?

#5


返回类型不能改么
就是说private List<Object> readLog( ) throws LogsReceiveException, Exception{

#6


引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

  创建一个MatchedLogRec对象~~~!!!
  在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


你的意思是不是我在MatchedLogRec类里面加一个构造器,
但是这样我怎么才能把line的值加到list里?

#7


引用 5 楼 zhouyuqwert 的回复:
返回类型不能改么
就是说private List<Object> readLog( ) throws LogsReceiveException, Exception{

这当然不能改,我要的就是这个类型的list,改了我做这些用来干什么

#8


引用 4 楼 ht385161856 的回复:
private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
sendConfirm();
l.add(……

最好还是不要这么做。。感觉会出错
如果不能改返回类型可以像3楼说的增加个属性什么的
如果连类也无法改。。这个貌似没法做了,不可能达到List<MatchedLogRec>里面放一个String

#9


引用 6 楼 ht385161856 的回复:
引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


你的意思是不是我在MatchedLogRec类里面加……

Public class MatchedLogRec
{
    private String line;//构造这个对象存String,判断不为null就是你要得String
}

#10


引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
……

我现在这项目做了一半也没办法测试,蛋疼,不知道对不对

#11


引用 10 楼 ht385161856 的回复:
引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object……

测试下单个方法 随便写个main测试下嘛 或者junit测试下

#12


引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


……


是这个样子吗?
private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
MatchedLogRec m = new MatchedLogRec(line);
while(line!=null){
sendConfirm();
list.add(m);
  System.out.println(line);
}

return list;

}

#13


引用 11 楼 zhouyuqwert 的回复:
引用 10 楼 ht385161856 的回复:

引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Objec……

这个没办法测试的,因为里面的方法还没写好,控制台也还没写好

#14


引用 12 楼 ht385161856 的回复:
引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后ad……

差不多这个意思 也可以不用构造函数嘛 可以用setter
setLine(String line)给对象属性赋值

#15


引用 14 楼 zhouyuqwert 的回复:
引用 12 楼 ht385161856 的回复:

引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建……

这个和我刚才那个结果没什么区别把。。

#16


list<?> 把其中的“?”换成你要存放的数据就可以了,如果要放不同类型的数据,可以用list<Object> or list<?>.

#17


用Map   以后不管那个类里有没有那样类型的属性 都可以放进去

#18


直接这么写List要不就这么写List<Object>

#19


首先,不同的类型是指什么?

如果实现同一接口、父类,那么直接List<接口、父类>,正所谓面向接口编程

如果根本没关系的两个东西比如String/Integer/Date/Point,那你混在一起干嘛?
黄豆绿豆分开放很方便,混在一起再分就要死人

#20


不同类型的数据可以直接add添加阿


但是,添加的时候好添加,取得时候有点难啊

#21


不要这样做
要么固定List<MatchedLogRec>
要么List<Object>
如果你需要一个String和一个MatchedLogRec,那么可以重构MatchedLogRec,加入String property.

#22


List<Object> list = new List<Object>();
list.add(你要放的任意不同类型的数据。如果是基本类型数据。需要封装);

#23


不要用泛型啊

#24


interface A {

}

interface B extends A{

}

class AA implements A
class BB implements B

List<A> list;
list.add(AA);
list.add(BB);

#25


引用 19 楼 shine333 的回复:
首先,不同的类型是指什么?

如果实现同一接口、父类,那么直接List<接口、父类>,正所谓面向接口编程

如果根本没关系的两个东西比如String/Integer/Date/Point,那你混在一起干嘛?
黄豆绿豆分开放很方便,混在一起再分就要死人



是的,不明白楼主为什么要这么做?如果你的业务真的需要这么做,该考虑重写这个方法了

#1


List<Object>

#2


引用 1 楼 zhouyuqwert 的回复:
List<Object>

让我把数据放到这里面去?

#3


引用 1 楼 zhouyuqwert 的回复:
List<Object>

   创建一个MatchedLogRec对象~~~!!!
   在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!

#4


private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
sendConfirm();
l.add(line);
  System.out.println(line);
}
list.addAll((Collection<? extends MatchedLogRec>) l);

return list;

}

按照1楼的想法,我这么做行么?

#5


返回类型不能改么
就是说private List<Object> readLog( ) throws LogsReceiveException, Exception{

#6


引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

  创建一个MatchedLogRec对象~~~!!!
  在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


你的意思是不是我在MatchedLogRec类里面加一个构造器,
但是这样我怎么才能把line的值加到list里?

#7


引用 5 楼 zhouyuqwert 的回复:
返回类型不能改么
就是说private List<Object> readLog( ) throws LogsReceiveException, Exception{

这当然不能改,我要的就是这个类型的list,改了我做这些用来干什么

#8


引用 4 楼 ht385161856 的回复:
private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
sendConfirm();
l.add(……

最好还是不要这么做。。感觉会出错
如果不能改返回类型可以像3楼说的增加个属性什么的
如果连类也无法改。。这个貌似没法做了,不可能达到List<MatchedLogRec>里面放一个String

#9


引用 6 楼 ht385161856 的回复:
引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


你的意思是不是我在MatchedLogRec类里面加……

Public class MatchedLogRec
{
    private String line;//构造这个对象存String,判断不为null就是你要得String
}

#10


引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object>();
while(line!=null){
……

我现在这项目做了一半也没办法测试,蛋疼,不知道对不对

#11


引用 10 楼 ht385161856 的回复:
引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Object> l = new ArrayList<Object……

测试下单个方法 随便写个main测试下嘛 或者junit测试下

#12


引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后add(MatchedLogRec) 对象!


……


是这个样子吗?
private  List<MatchedLogRec>  readLog( ) throws  LogsReceiveException, Exception{
String line = in.readLine();
MatchedLogRec m = new MatchedLogRec(line);
while(line!=null){
sendConfirm();
list.add(m);
  System.out.println(line);
}

return list;

}

#13


引用 11 楼 zhouyuqwert 的回复:
引用 10 楼 ht385161856 的回复:

引用 8 楼 zhouyuqwert 的回复:
引用 4 楼 ht385161856 的回复:

private List<MatchedLogRec> readLog( ) throws LogsReceiveException, Exception{
String line = in.readLine();
List<Objec……

这个没办法测试的,因为里面的方法还没写好,控制台也还没写好

#14


引用 12 楼 ht385161856 的回复:
引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建一个在set它!
完了就创建一个List 、然后ad……

差不多这个意思 也可以不用构造函数嘛 可以用setter
setLine(String line)给对象属性赋值

#15


引用 14 楼 zhouyuqwert 的回复:
引用 12 楼 ht385161856 的回复:

引用 9 楼 zhouyuqwert 的回复:
引用 6 楼 ht385161856 的回复:

引用 3 楼 hzw2312 的回复:
引用 1 楼 zhouyuqwert 的回复:
List<Object>

创建一个MatchedLogRec对象~~~!!!
在这个类中你如果有String类型的字段就set它、没有你创建……

这个和我刚才那个结果没什么区别把。。

#16


list<?> 把其中的“?”换成你要存放的数据就可以了,如果要放不同类型的数据,可以用list<Object> or list<?>.

#17


用Map   以后不管那个类里有没有那样类型的属性 都可以放进去

#18


直接这么写List要不就这么写List<Object>

#19


首先,不同的类型是指什么?

如果实现同一接口、父类,那么直接List<接口、父类>,正所谓面向接口编程

如果根本没关系的两个东西比如String/Integer/Date/Point,那你混在一起干嘛?
黄豆绿豆分开放很方便,混在一起再分就要死人

#20


不同类型的数据可以直接add添加阿


但是,添加的时候好添加,取得时候有点难啊

#21


不要这样做
要么固定List<MatchedLogRec>
要么List<Object>
如果你需要一个String和一个MatchedLogRec,那么可以重构MatchedLogRec,加入String property.

#22


List<Object> list = new List<Object>();
list.add(你要放的任意不同类型的数据。如果是基本类型数据。需要封装);

#23


不要用泛型啊

#24


interface A {

}

interface B extends A{

}

class AA implements A
class BB implements B

List<A> list;
list.add(AA);
list.add(BB);

#25


引用 19 楼 shine333 的回复:
首先,不同的类型是指什么?

如果实现同一接口、父类,那么直接List<接口、父类>,正所谓面向接口编程

如果根本没关系的两个东西比如String/Integer/Date/Point,那你混在一起干嘛?
黄豆绿豆分开放很方便,混在一起再分就要死人



是的,不明白楼主为什么要这么做?如果你的业务真的需要这么做,该考虑重写这个方法了