Een KeyValuePair in Java

Ik ben op zoek naar een KeyValuePair-klasse in Java.
Aangezien java.util intensief gebruikmaakt van interfaces, is er geen concrete implementatie voorzien, alleen de Map.Entry-interface.

Is er een canonieke implementatie die ik kan importeren?
Het is een van die lessen “programmeren voor loodgieters” waarvan ik een hekel heb om 100x te implementeren.


Antwoord 1, autoriteit 100%

De klasse AbstractMap.SimpleEntryis algemeen en kan nuttig zijn.


Antwoord 2, autoriteit 41%

Android-programmeurs kunnen BasicNameValuePair

Bijwerken:

BasicNameValuePairis nu verouderd (API 22) .
Gebruik in plaats daarvan Koppelen.

Voorbeeld van gebruik:

Pair<Integer, String> simplePair = new Pair<>(42, "Second");
Integer first = simplePair.first; // 42
String second = simplePair.second; // "Second"

Antwoord 3, autoriteit 21%

De Pair-klasse van Commons Lang kan helpen:

Pair<String, String> keyValue = new ImmutablePair("key", "value");

Natuurlijk moet je commons-lang toevoegen.


Antwoord 4, autoriteit 6%

Het gebruik van javafx.util.Pairis voldoende voor de meeste eenvoudige sleutel-waarde-koppelingen van twee soorten die kunnen worden geïnstantieerd.

Pair<Integer, String> myPair = new Pair<>(7, "Seven");
Integer key = myPair.getKey();
String value = myPair.getValue();

Antwoord 5, autoriteit 4%

import java.util.Map;
public class KeyValue<K, V> implements Map.Entry<K, V>
{
    private K key;
    private V value;
    public KeyValue(K key, V value)
    {
        this.key = key;
        this.value = value;
    }
    public K getKey()
    {
        return this.key;
    }
    public V getValue()
    {
        return this.value;
    }
    public K setKey(K key)
    {
        return this.key = key;
    }
    public V setValue(V value)
    {
        return this.value = value;
    }
}

Antwoord 6, autoriteit 3%

Ik gebruik graag

Eigenschappen

Voorbeeld:

Properties props = new Properties();
props.setProperty("displayName", "Jim Wilson"); // (key, value)
String name = props.getProperty("displayName"); // => Jim Wilson
String acctNum = props.getProperty("accountNumber"); // => null
String nextPosition = props.getProperty("position", "1"); // => 1

Als je bekend bent met een hashtabel, ben je hier al redelijk bekend mee


Antwoord 7, autoriteit 2%

U kunt eenvoudig uw aangepaste KeyValuePair-klasse maken

public class Key<K, V>{
    K key;
    V value;
    public Key() {
    }
    public Key(K key, V  value) {
        this.key = key;
        this.value = value;
    }
    public void setValue(V value) {
        this.value = value;
    }
    public V getValue() {
        return value;
    }
    public void setKey(K key) {
        this.key = key;
    }
    public K getKey() {
        return key;
    }
}

Antwoord 8

Mijn favoriet is

HashMap<Type1, Type2>

Het enige wat u hoeft te doen is het gegevenstype voor de sleutel voor Type1 en het gegevenstype voor de waarde voor Type2 op te geven. Het is het meest voorkomende sleutelwaarde-object dat ik in Java heb gezien.

https://docs.oracle.com /javase/7/docs/api/java/util/HashMap.html


Antwoord 9

Hashtable<String, Object>

Het is beter dan java.util.Properties, wat in feite een uitbreiding is van Hashtable<Object, Object>.


Antwoord 10

Ik heb een NameValuePairklasse in GlobalMentor’s kernbibliotheek, beschikbaar in Maven. Dit is een lopend projectmet een lange geschiedenis, dus dien elk verzoek voor wijzigingen of verbeteringen in .

Other episodes