[java] 자바 연관 배열

PHP에서와 같이 Java로 연관 배열을 만들고 가져올 수 있습니까?

예를 들면 다음과 같습니다.

$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';



답변

Java는 연관 배열을 지원하지 않지만을 사용하여 쉽게 달성 할 수 있습니다 Map. 예 :

Map<String, String> map = new HashMap<String, String>();
map.put("name", "demo");
map.put("fname", "fdemo");
// etc

map.get("name"); // returns "demo"

예를 들어 훨씬 더 정확한 것은 (문자열을 필요에 맞는 객체로 바꿀 수 있기 때문에) 다음과 같이 선언하는 것입니다.

List<Map<String, String>> data = new ArrayList<>();
data.add(0, map);
data.get(0).get("name"); 

자세한 내용은 공식 문서를 참조하십시오


답변

Java에는 PHP와 같은 연관 배열이 없습니다.

맵 사용과 같이 수행중인 작업에 대한 다양한 솔루션이 있지만 정보를 찾는 방법에 따라 다릅니다. 모든 정보를 보유하고 클래스의 인스턴스를에 저장하는 클래스를 쉽게 작성할 수 있습니다 ArrayList.

public class Foo{
    public String name, fname;

    public Foo(String name, String fname){
        this.name = name;
        this.fname = fname;
    }
}

그리고…

List<Foo> foos = new ArrayList<Foo>();
foos.add(new Foo("demo","fdemo"));
foos.add(new Foo("test","fname"));

그래서 당신은 그들처럼 액세스 할 수 있습니다 …

foos.get(0).name;
=> "demo"


답변

지도를 통해이 작업을 수행 할 수 있습니다. 같은 것

Map<String, String>[] arr = new HashMap<String, String>[2]();
arr[0].put("name", "demo");

그러나 Java를 사용하기 시작하면 데이터를 나타내는 클래스 / 모델을 만들면 최선의 선택이 될 것입니다. 난 그럴거야

class Person{
String name;
String fname;
}
List<Person> people = new ArrayList<Person>();
Person p = new Person();
p.name = "demo";
p.fname = "fdemo";
people.add(p);


답변

Java에는 연관 배열과 같은 것이 없습니다. 가장 가까운 상대는 Map입니다.이 형식은 강력하게 입력되지만 구문 / API는 적습니다.

이것은 귀하의 예를 기반으로 얻을 수있는 가장 가까운 것입니다.

Map<Integer, Map<String, String>> arr =
    org.apache.commons.collections.map.LazyMap.decorate(
         new HashMap(), new InstantiateFactory(HashMap.class));

//$arr[0]['name'] = 'demo';
arr.get(0).put("name", "demo");

System.out.println(arr.get(0).get("name"));
System.out.println(arr.get(1).get("name"));    //yields null


답변

상기 봐 인터페이스 및 콘크리트 클래스에서 의 HashMap .

지도를 만들려면

Map<String, String> assoc = new HashMap<String, String>();

키-값 쌍을 추가하려면

assoc.put("name", "demo");

키와 관련된 값을 검색하려면

assoc.get("name")

그리고 원하는 것처럼 보이는지도 배열을 만들 수 있습니다.

Map<String, String>[] assoc = ...


답변

글쎄, 나는 또한 연관 배열을 찾고 있었고 최상의 솔루션으로 맵 목록을 찾았습니다.

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


public class testHashes {

public static void main(String args[]){
    Map<String,String> myMap1 = new HashMap<String, String>();

    List<Map<String , String>> myMap  = new ArrayList<Map<String,String>>();

    myMap1.put("URL", "Val0");
    myMap1.put("CRC", "Vla1");
    myMap1.put("SIZE", "Vla2");
    myMap1.put("PROGRESS", "Vla2");

    myMap.add(0,myMap1);
    myMap.add(1,myMap1);

    for (Map<String, String> map : myMap) {
        System.out.println(map.get("URL"));
    }

    //System.out.println(myMap);

}


}


답변

Perl의 해시와 동등한 Java

HashMap<Integer, HashMap<String, String>> hash;