2

このような配列リストがあります

ArrayList list = new ArrayList();
list.add("somethingold");
list.add(3);
list.add("somethingnew");
list.add(5);

リスト出力を印刷すると、次のようになります。

[somethingold, 3, somethingnew, 5 ]

ここでは、整数要素のみをフェッチします。

出力が整数の場合は他のリストに入れ、そうでない場合はもう1つのリストに入れます。

これは私が欲しいものです:

[3,5]
[somethingold, somethingnew]
4

9 に答える 9

1

instanceof演算子 を使用して実現できます。

        for (Object object : list) 
        {
            if(object instanceof Integer)
            {
                System.out.println(object); // Integer
            }
            else if(object instanceof String)
            {
                System.out.println(object); // String
            }
        }
于 2013-07-31T10:14:29.930 に答える
0

[3,5] [somethingold, somethingnew]すでに 2 つの別個のリストのように見えるものが必要です。

だからあなたはできる

class IntegersAndStrings {
    private final List<String> strings = new ArrayList<String>();
    private final List<Integer> ints = new ArrayList<Integer>();

    public void add(int i) {
        ints.add(Integer.valueOf(i));
    }

    public void add(String s) {
        strings.add(s);
    }

    @Override
    public String toString() {
        return ints.toString() + strings.toString();
    }
}

以前のように使用する

class Main {
    public static void main(String[] args) {
        IntegersAndStrings list = new IntegersAndStrings();
        list.add("somethingold");
        list.add(3);
        list.add("somethingnew");
        list.add(5);
        System.out.println(list);
    }
}

出力は次のようになります

[3, 5][somethingold, somethingnew]
于 2013-07-31T10:21:12.543 に答える
0

JDK API を調べようとしています。これは、ジェネリックが Java に導入された最も重要な理由の 1 つであり、タイプ セーフなコレクションを提供します。

また、要素の追加または取得中に心配する必要はありません (明示的な型キャストは必要ありません)。

フレンドリーな提案は本に書いてあります。

ありがとう

于 2013-07-31T10:19:07.707 に答える
0
Collections.sort(list);
int index = 0;
for (Object obj: list) {
  index ++;
  if (obj instanceof String) {
     break;
}
}

List<Integer> integerList = list.subList(0.index);
List<String> stringList = list.subList(index,list.size());

System.out.println(integerList);
System.out.println(stringList);

これを試してください、うまくいくことを願っています

于 2013-07-31T10:25:53.613 に答える
0

とてもシンプルです。わずか 2 行のコード

string[] stringList = list.OfType<string>().ToArray();
 Int32[] intList = list.OfType<Int32>().ToArray();
于 2013-07-31T10:15:21.010 に答える
0

List<Integer>またはList<String>、Java 1.5+ を使用している場合は、型付きコレクションを作成することをお勧めします。

ジェネリック配列の場合、instanceOf 演算子を使用して区別できます。

for(Object obj: list){
   if(obj instanceOf Ineteger){
       ...
   }else if(obj instanceOf String){
       ...
   }
}
于 2013-07-31T10:15:27.773 に答える
0

文字列と整数を見つけることができるという点で、for-loopを使用してオブジェクトのリストをフェッチする必要があります。

以下の例は、値を取得する方法を示しています..

ArrayList list = new ArrayList();
for (Object o : list) {
    if (o.getClass().equals(Integer.TYPE)) {
       ...
    }
    else if (o.getClass().equals(String.class)) {
       ...
    }
}
于 2013-07-31T10:15:37.947 に答える