如何以不同的数据类型显示此列表?

时间:2016-09-07 10:27:35

标签: java eclipse

List i=new ArrayList();

    i.add("abc");
    i.add("def");
    i.add(61);
    i.add(9);
    i.add(50);
    i.add("ghi");
    i.add("ikh");
    i.add("oihik");
    i.add("oig");
    i.add(243);
    i.add(5);
    i.add(54);

    for (Iterator iterator = new Test123((i.iterator())); iterator.hasNext();) {
        Object object = (Object) iterator.next();
        System.out.println(object);

预期输出将是:

字符串输入:abc def ghi ikh oihik oig

整数输入:61 9 50 243 5 54

我是java的新手,并在系统维护和开发方面实习。我真的需要一些帮助解决这个问题..请帮帮我

如果列表被分组并且我想过滤整数输出怎么样?

预期输出为:

字符串输入:abc def ghi ikh oihik oig

整数输入:61 9 50 243 5 54

小于60的整数是:9 50 5 54

2 个答案:

答案 0 :(得分:0)

如果您想要的是分隔字符串和整数元素并打印它们,您可以这样做:

List i=new ArrayList();

i.add("abc");
i.add("def");
i.add(61);
i.add(9);
i.add(50);
i.add("ghi");
i.add("ikh");
i.add("oihik");
i.add("oig");
i.add(243);
i.add(5);
i.add(54);

StringBuilder strBuilder = new StringBuilder( "String input:");
StringBuilder intBuilder = new StringBuilder( "Integer input:");

for( Object o : i)
{
    if( o instanceof String)
    {
        strBuilder.append( " ");
        strBuilder.append( o);
    }
    else if( o instanceof Integer)
    {
        intBuilder.append( " ");
        intBuilder.append( o);
    }
}

System.out.println( strBuilder.toString());
System.out.println( intBuilder.toString());

答案 1 :(得分:0)

您可以使用instanceof Class测试列表中的每个项目。

    如果您的列表中的项目为instanceof String ,则
  • String会返回true 如果您的列表中的项目为instanceof Double
  • ,则
  • Double会返回true 如果您的列表中的项目是instanceof NumberInteger等,则
  • Double会返回true。

使用Streamlambda expression这是一种非常简单直接的方法。最后使用List的String表示中使用的String方法提取所需的replaceAll()

List<String> listString = (List<String>) i.stream()
     .filter(t -> t instanceof String).collect(Collectors.toList());
List<Number> listNumber = (List<Number>) i.stream()
     .filter(t -> t instanceof Number).collect(Collectors.toList());

String str = listString.toString().replaceAll(",", "").replaceAll("[\\[.\\].\\s+]", " ");
String num = listNumber.toString().replaceAll(",", "").replaceAll("[\\[.\\].\\s+]", " ");

System.out.println(str); // prints: abc def ghi ikh oihik oig
System.out.println(num); // prints: 61 9 50 243 5 54