Dushkin:
Necesito trabajar en una serie de objetos que tiene el siguiente valor:
objectsArray = {Object[3]@10910}
{Class@10294} "class com.ApplicationConfiguration" -> {ApplicationConfiguration@10958}
key = {Class@10294} "class com.ApplicationConfiguration"
value = {ApplicationConfiguration@10958}
{Class@10837} "class com.JoongaContextData" -> {JoongaContextData@10960}
key = {Class@10837} "class com.JoongaContextData"
value = {JoongaContextData@10960}
{Class@10835} "class com.SecurityContext" -> {SecurityContext@10961}
key = {Class@10835} "class com.SecurityContext"
value = {SecurityContext@10961}
El código que crea la matriz de objetos es:
public class ProcessDetails {
private UUID myId;
private Date startTime;
private ResultDetails resultDetails;
private long timeout;
.
.
.
}
public interface ProcessStore extends Map<Class, Object> {
<T> T unmarshalling(Class<T> var1);
<T> void marshalling(T var1);
ProcessDetails getProcessDetails();
}
Object[] objectsArray = processStore.entrySet().toArray();
Necesito extraer un valor de la ApplicationConfiguration tipo de elemento.
Tenga en cuenta que no siempre es el primer elemento de la matriz!
Para empezar, he tratado de hacer lo siguiente:
List<ApplicationConfiguration> ApplicationConfigurations = Arrays.stream(objectsArray)
.filter(item -> item instanceof ApplicationConfiguration)
.map(item -> (ApplicationConfiguration)item)
.collect(Collectors.toList());
con el fin de obtener una lista con el elemento específico. Por alguna razón me dieron una lista vacía.
Por favor alguien puede decirme por qué?
¡Gracias!
Eran :
objectsArray
contiene un mapa entradas, y hay que filtrar los valores de esas entradas.
List<ApplicationConfiguration> ApplicationConfigurations =
Arrays.stream(objectsArray)
.map(obj -> (Map.Entry<Class, Object>) obj)
.map(Map.Entry::getValue)
.filter(item -> item instanceof ApplicationConfiguration)
.map(item -> (ApplicationConfiguration)item)
.collect(Collectors.toList());
Por supuesto, sería más limpio si ha cambiado
Object[] objectsArray = processStore.entrySet().toArray();
a
Map.EntryMap.Entry<Class,Object>[] objectsArray = processStore.entrySet().toArray(new Map.Entry[0]);
por lo que se puede escribir:
List<ApplicationConfiguration> ApplicationConfigurations =
Arrays.stream(objectsArray)
.filter(e -> e.getValue() instanceof ApplicationConfiguration)
.map(e -> (ApplicationConfiguration) e.getValue())
.collect(Collectors.toList());