Как определить массив с двумя столбцами в Java? - PullRequest
1 голос
/ 14 августа 2010

У меня есть hashMap.Каждое «Значение» будет списком, который позже будет сопоставлен с моими «Ключами».Список должен выглядеть следующим образом:

[длина, время] [длина, время] [длина, время]

Например: Key {srcAddr = x, dstAddr = y, srcPort =12345, dstPort = 80} value {(6523,0.001), (124,0.05), (), (), ...}

Мне просто интересно, как мне получить массив из двух столбцов arrayList.

package myclassifier;
import java.util.ArrayList;

public class FlowStatics {
int packetLength;
double timeArrival;
public FlowStatics(int pLength, double tArrival)
{
    this.packetLength = pLength;
    this.timeArrival = tArrival;


}

} и вот как я это использовал:

final ArrayList<FlowStatics> staticsArray = new ArrayList<FlowStatics>();
final HashMap<Flows, ArrayList> myHashMap = new HashMap<Flows, ArrayList>();

FlowStatics flowStatics = new FlowStatics(packetLength,timeArrival);
staticsArray.add(flowStatics);
myHashMap.put(flows, staticsArray);

и вот часть, которую я читаю:

Iterator<Flows> iterator =  myHashMap.keySet().iterator();
while(iterator.hasNext()){
    Flows key = iterator.next();
    ArrayList value = myHashMap.get(key);
    System.out.println("Fows"+key+"----------"+"Statics"+ value);

Ответы [ 2 ]

4 голосов
/ 14 августа 2010

Ну, ваше FlowStatics - правильное решение

List<FlowStatics> даст вам "список двухколоночных массивов".

Обновление: по состоянию на ваше обновление, myHashMap.put(flows, flowStatics);неправильно.Вы это ставите отдельную пару, а не список на карте.Вы должны использовать:

staticsArray.add(flowStatics);
myHashMap.put(flows, staticsArray);
3 голосов
/ 14 августа 2010

A List<E> - это абстракция для однородного списка элементов, тип которых E.Есть некоторые ограничения (например, нет примитивов), но концептуально тип E может быть определен так, как вы хотите.

Предположим, есть абстракция Pair<L,R>.Тогда List<Pair<L,R>> все еще является списком некоторых E, но теперь, когда E является Pair<L,R>.Таким образом, это все еще список из одной колонки, но каждый элемент в списке является парой, так что это своего рода список из двух колонок.

Обратите внимание, что вам не всегда нуженуниверсальный Pair<L,R>.Любой тип E, который должным образом инкапсулирует всю информацию, может использоваться в List<E>.

И, между прочим, вы также можете иметь List<List<E>>.

См. Также

Смежные вопросы


Аналогия возвращаемых значений

Часто люди спрашивают: «Как я могувернуть два значения в Java?Ответ аналогичен.Вы возвращаете одно значение, новый тип, который инкапсулирует обе информации.

Таким образом, вместо:

// attempt to return two values
// DOES NOT COMPILE

return "James Bond";
return "007";

Вы делаете:

return new SecretAgent("James Bond", "007");

Связанные вопросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...