извлечь подсписок конкретного продукта из списка абстрактного продукта

введите здесь описание изображения

Я строю гиперграф, используя библиотеку jung.

  Hypergraph hypergraph = new SetHyperGraph<Vertex,HyperEdge>();

затем я добавляю все свои вершины (изображение, тег, местоположение)

    hypergraph.addVertex()

    ArrayList<Vertex> allVertex = hypergraph.getVertices;

Теперь я хотел бы извлечь только изображение Vertex из моего listallVertex

почему эта инструкция незаконна?

    ArrayList<ImageVertex> allImageList=allVertex.subList(0,j);

У кого-нибудь есть другое решение?


person nawara    schedule 25.04.2013    source источник
comment
Потому что allVertex может также содержать TagVertex и ImageVertex, а java не может понять это во время компиляции.   -  person lifus    schedule 25.04.2013
comment
@lifus любое предложение?   -  person nawara    schedule 25.04.2013
comment
Используйте цикл for с instanceof. Кстати, Таррсалах ответил на вопрос намного яснее, чем я.   -  person lifus    schedule 25.04.2013
comment
Что означает слово concret в названии?   -  person Gabe    schedule 25.04.2013
comment
Как показано на диаграмме uml, абстрактный продукт=Vertex и конкретный продукт равны Image,tag...   -  person nawara    schedule 25.04.2013


Ответы (2)


Просто пример кода

List<ImageVertex> allImageList = new ArrayList<ImageVertex>();
for (Vertex vertex : allVertex) {
  if (vertex instanceof ImageVertex) {
    allImageList.add((ImageVertex) vertex);
  }
}
person lifus    schedule 25.04.2013

Поскольку ArrayList<ImageVertex> не является подтипом ArrayList<Vertex>.

возможным решением будет:

ArrayList<ImageVertex> allImageList= new ArrayList<>();

for (Vertex vertex: allVertex.sublist(0,j)) {
    if (vertex instanceof ImageVertex) {
        allImageList.add((ImageVertex) vertex);
    }
}
person Salah Eddine Taouririt    schedule 25.04.2013
comment
попробуйте зациклить весь список Vertex и получить элементы ImageVertx, используя метод instanceof. - person Salah Eddine Taouririt; 26.04.2013
comment
Я считаю, что j - это количество ImageVertex, но кажется, что nawara хочет извлечь все вершины изображения. Кроме того, пожалуйста, добавьте актерский состав к ImageVertex. - person lifus; 26.04.2013
comment
j - это номер всех моих вершин изображения, на самом деле моя идея состоит в том, чтобы отсортировать allVertex по алфавиту (изображение-›местоположение-›тег), затем, поскольку я знаю значение j, я извлекаю первую j вершину из allVertex списка - person nawara; 26.04.2013
comment
Итак, вы можете использовать этот подход или просто использовать один цикл для каждого вместо сортировки, подсписка и цикла. - person lifus; 26.04.2013