Program Tip

내 배열 목록의 항목 수 계산

programtip 2020. 12. 14. 20:47
반응형

내 배열 목록의 항목 수 계산


내 배열의 항목 ID 수를 계산하고 싶습니다. 코드에 이것을 추가하는 방법에 대한 예제를 얻을 수 있습니까? 아래 코드;

if (value != null && !value.isEmpty()) {
    Set set = value.keySet();
    Object[] key = set.toArray();
    Arrays.sort(key);

    for (int i = 0; i < key.length; i++) {
        ArrayList list = (ArrayList) value.get((String) key[i]);

        if (list != null && !list.isEmpty()) {
            Iterator iter = list.iterator();
            double itemValue = 0;
            String itemId = "";

            while (iter.hasNext()) {
                Propertyunbuf p = (Propertyunbuf) iter.next();
                if (p != null) {
                    itemValue = itemValue + p.getItemValue().doubleValue();
                    itemId = p.getItemId();
                }

                buf2.append(NL);
                buf2.append("                  " + itemId);

            }

            double amount = itemValue;
            totalAmount += amount;
        }
    }
}

itemId목록에들 목록의 요소 수와 동일합니다 :

int itemCount = list.size();

그러나 고유 항목 ID (@pst 당)의 수를 계산하려는 경우 집합을 사용하여 추적해야합니다.

Set<String> itemIds = new HashSet<String>();

//...
itemId = p.getItemId();
itemIds.add(itemId);

//... later ...
int uniqueItemIdCount = itemIds.size();

배열의 항목 ID 수를 계산하려고합니다. 간단히 사용 :

int counter=list.size();

코드가 적을수록 효율성이 높아집니다. 조상의 바퀴를 돌리지 마십시오 ...


루프 외부에서 int를 만듭니다.

int numberOfItemIds = 0;
for (int i = 0; i < key.length; i++) {

그런 다음 루프에서 증가시킵니다.

itemId = p.getItemId();
numberOfItemIds++;

Mark Peters 솔루션에 추가 할 유일한 것은 ArrayList를 반복 할 필요가 없다는 것입니다. Set에서 addAll (Collection) 메서드를 사용할 수 있어야합니다. 요약을 수행하려면 전체 목록을 반복하기 만하면됩니다.


You can get the number of elements in the list by calling list.size(), however some of the elements may be duplicates or null (if your list implementation allows null).

If you want the number of unique items and your items implement equals and hashCode correctly you can put them all in a set and call size on that, like this:

new HashSet<>(list).size()

If you want the number of items with a distinct itemId you can do this:

list.stream().map(i -> i.itemId).distinct().count()

Assuming that the type of itemId correctly implements equals and hashCode (which String in the question does, unless you want to do something like ignore case, in which case you could do map(i -> i.itemId.toLowerCase())).

You may need to handle null elements by either filtering them before the call to map: filter(Objects::nonNull) or by providing a default itemId for them in the map call: map(i -> i == null ? null : i.itemId).

참고URL : https://stackoverflow.com/questions/3704194/count-the-number-of-items-in-my-array-list

반응형