Android Open Source - task4java Indexed List






From Project

Back to project page task4java.

License

The source code is released under:

Apache License

If you think the Android project task4java listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *  Copyright (c) 2014 Andree Hagelstein, Maik Schulze, Deutsche Telekom AG. All Rights Reserved.
 *  /*ww w  .  jav a  2 s .c  o m*/
 *  Filename: IndexedList.java
 */

package com.task4java;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public abstract class IndexedList<K, V, L> extends ArrayList<L> {

  private static final long serialVersionUID = 1L;

  private Object _oLock = new Object();
  private HashMap<K, V> _keyItem = null;

  protected abstract Tuple<K, V> extractKeyValue(L item);

  public List<K> getAllKeys() {

    synchronized (_oLock) {

      List<K> allKeys = new ArrayList<K>();

      for (L item : this) {

        if (item != null) {

          allKeys.add(extractKeyValue(item).left);
        }
      }

      return allKeys;
    }
  }

  public V getItem(K key, V defaultValue) {

    synchronized (_oLock) {

      HashMap<K, V> keyItem = _keyItem;

      if (keyItem == null) {
        keyItem = new HashMap<K, V>();

        for (L item : this) {

          if (item != null) {

            Tuple<K, V> keyValue = extractKeyValue(item);

            keyItem.put(keyValue.left, keyValue.right);
          }
        }

        _keyItem = keyItem;
      }

      if (keyItem.containsKey(key)) {

        return keyItem.get(key);
      } else {

        return defaultValue;
      }
    }
  }

  public void refresh() {

    synchronized (_oLock) {
      _keyItem = null;
    }
  }
}




Java Source Code List

com.task4java.IndexedList.java
com.task4java.KeyValuePair.java
com.task4java.Stopwatch.java
com.task4java.StringUtils.java
com.task4java.Tuple.java
com.task4java.android.activity.ActivityUtils.java
com.task4java.android.activity.BaseActivity.java
com.task4java.android.annotation.Annotations.java
com.task4java.android.examples.App.java
com.task4java.android.examples.activity.AboutActivity.java
com.task4java.android.examples.activity.ExpandableListAdapter.java
com.task4java.android.examples.activity.MainActivity.java
com.task4java.android.examples.activity.WelcomeActivity.java
com.task4java.android.examples.backend.AndroidServiceClient.java
com.task4java.android.util.concurrent.ActivityExecutor.java
com.task4java.android.util.concurrent.HandlerExecutor.java
com.task4java.data.backend.IServiceClient.java
com.task4java.data.backend.ServiceClient.java
com.task4java.data.backend.model.MainMenuAnnotation.java
com.task4java.data.frontend.ApplicationClient.java
com.task4java.data.frontend.model.MainMenuItemGroupList.java
com.task4java.data.frontend.model.MainMenuItemGroup.java
com.task4java.data.frontend.model.MainMenuItem.java
com.task4java.http.HttpHeaders.java
com.task4java.http.HttpMimeTypes.java
com.task4java.http.HttpRequestMethods.java
com.task4java.http.HttpStatusCodes.java
com.task4java.http.client.HttpContent.java
com.task4java.http.client.HttpStringContent.java
com.task4java.http.client.IImageClient.java
com.task4java.http.client.IRestClient.java
com.task4java.http.client.ImageClientGingerbread.java
com.task4java.http.client.ImageClient.java
com.task4java.http.client.ImageResponse.java
com.task4java.http.client.RestClientGingerbread.java
com.task4java.http.client.RestClient.java
com.task4java.http.client.RestResponse.java
com.task4java.lang.reflect.ReflectionCache.java
com.task4java.net.URLBuilder.java
com.task4java.util.concurrent.CallableTask.java
com.task4java.util.concurrent.CallableValue2.java
com.task4java.util.concurrent.CallableValue.java
com.task4java.util.concurrent.ITaskStart.java
com.task4java.util.concurrent.ITask.java
com.task4java.util.concurrent.TaskCompletionSource.java
com.task4java.util.concurrent.TaskContinuationOptions.java
com.task4java.util.concurrent.TaskException.java
com.task4java.util.concurrent.TaskFactory.java
com.task4java.util.concurrent.TaskResultException.java
com.task4java.util.concurrent.TaskStartException.java
com.task4java.util.concurrent.Task.java
com.task4java.util.log.ConsoleLogger.java
com.task4java.util.log.ILog.java
com.task4java.util.log.Logger.java