Мне нужно удалить дубликаты из массива элементов - PullRequest
1 голос
/ 15 июня 2011

Я на самом деле не кодер, поэтому, пожалуйста, будьте непредвзяты, когда речь заходит о том, что я называю различными аспектами кода. Я могу быть совершенно не прав насчет того, что на самом деле называется ...

Во всяком случае, я (верю), у меня есть массив элементов, содержащих множество различных данных, прикрепленных к каждому элементу. Затем я перебираю этот массив, помещая содержимое в мой jsp. Проблема в том, что массив содержит дубликаты, и я не хочу дубликатов в презентации на главной странице.

Я гуглил как уродец и обнаружил, что способ удалить дубликаты - это преобразовать массив в набор, так как набор не может содержать дубликаты. Справедливо. Я проверил разные страницы, описывающие, как это сделать, но я не понимаю: (

Это, вероятно, очень просто, но из того, что я могу сделать из этого, наборы содержат строки, и это не будет делать для меня, поскольку к моим предметам прикреплено много данных item.name, item.type и т. Д.

Я использую код

<c:forEach items="${results.searchResults}" var="foundItem" varStatus="status">
    <c:set var="curItem" value="${foundItem.item}" />
    <%-- get item details --%>
    <xmlfeed:getItemXML item="${curItem}" />
</c:forEach>

И я хочу убедиться, что все curItem уникальны. Бьюсь об заклад, лучший способ сделать это - убедиться, что массив «results.searchResults» превращается в набор, а затем возвращается, но я просто не понимаю, как это сделать.

Возможно, стоит упомянуть, что приведенный выше код уже находится внутри тега со следующими доступными тегами:

taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"

taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"

вместе с пользовательским xmlfeed tablib, конечно

Ответы [ 2 ]

1 голос
/ 15 июня 2011

В вашем result объекте есть переменная List<Item> searchResults?Вы можете изменить его на Set<String> searchResults; и в установщике или любом другом методе, который устанавливает данные для searchResults variable do this.searchResults = new HashSet<String>(resultlist);

, следующий код может быть не совсем верным для вас, но он поможетнайти свой собственный путь .....

public class Result {

    private List<String> result;
    private Set<String> searchResults;

    public Set<String> getSearchResults() {
        return searchResults;
    }

    public void setResult(List<String> result) {
        this.result = result;
        this.searchResults = new HashSet<String>(result);
    }
}

Код сервлета,

List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("A");
list.add("B");
list.add("A");
Result result = new Result();
result.setResult(list);
request.setAttribute("result", result);

request.getRequestDispatcher("testPage.jsp").forward(request, response);

В JSP,

<c:forEach items="${result.searchResults}" var="foundItem" varStatus="status">
    <c:set var="curItem" value="${foundItem}" />
    ${curItem}<br>
</c:forEach>
0 голосов
/ 15 июня 2011
    public Set<String> searchResults()
{
    List<String> list = new ArrayList<String>();
    list.add("A");list.add("B"); list.add("A");list.add("B");list.add("A");
    return new HashSet<String>(list);
}

Приведенный выше код возвращает уникальный список.

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