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"
이 예에서는 String을 필요에 맞는 오브젝트로 대체할 수 있기 때문에 보다 정확하게 다음과 같이 선언할 수 있습니다.
List<Map<String, String>> data = new ArrayList<>();
data.add(0, map);
data.get(0).get("name");
Java에는 PHP와 같은 연관 배열이 없습니다.
지도 사용 등 작업에는 다양한 솔루션이 있지만 정보를 검색하는 방법에 따라 다릅니다.모든 를 쉽게 를 든든 an you 든 you 、 you you you you you 。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);
Map 인터페이스와 구체적인 클래스 HashMap을 확인합니다.
맵을 작성하려면:
Map<String, String> assoc = new HashMap<String, String>();
키와 값의 쌍을 추가하려면:
assoc.put("name", "demo");
키와 관련된 값을 가져오려면 다음 절차를 수행합니다.
assoc.get("name")
물론 원하는 대로 지도 배열을 만들 수도 있습니다.
Map<String, String>[] assoc = ...
Java java java java java java java java java java java java java java java java java java java 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
그리고 Associative Array를 찾다가 List of maps를 최적의 솔루션으로 찾았습니다.
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);
}
}
HashMap<Integer, HashMap<String, String>> hash;
Java에는 연관 배열이 없습니다. 가장 가까운 것은 Map 인터페이스입니다.
여기 그 페이지의 샘플이 있습니다.
import java.util.*;
public class Freq {
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
// Initialize frequency table from command line
for (String a : args) {
Integer freq = m.get(a);
m.put(a, (freq == null) ? 1 : freq + 1);
}
System.out.println(m.size() + " distinct words:");
System.out.println(m);
}
}
실행 대상:
java Freq if it is to be it is up to me to delegate
다음과 같은 이점을 얻을 수 있습니다.
8 distinct words:
{to=3, delegate=1, be=1, it=2, up=1, if=1, me=1, is=2}
Array List 를 사용합니다.< Map < String , String >
다음은 코드 샘플입니다.
ArrayList<Map<String, String>> products = new ArrayList<Map<String, String>>();
while (iterator.hasNext()) {
Map<String, String> product = new HashMap<String, String>();
Element currentProduct = iterator.next();
product.put("id",currentProduct.get("id"));
product.put("name" , currentProduct.get("name") );
products.add(product );
}
System.out.println("products : " + products);
출력:
제품 : [{id=0001, name=param1}, {id=0002, name=param2}]
PHP와 같은 Java의 연관 배열:
SlotMap hmap = new SlotHashMap();
String key = "k01";
String value = "123456";
// Add key value
hmap.put( key, value );
// check if key exists key value
if ( hmap.containsKey(key)) {
//.....
}
// loop over hmap
Set mapkeys = hmap.keySet();
for ( Iterator iterator = mapkeys.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
String value = hmap.get(key);
}
상세한 것에 대하여는, 「Class Soft Hash Map」(https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/util/SoftHashMap.html 를 참조해 주세요.
JDK 1.5(http://tinyurl.com/3m2lxju)에는 다음과 같은 메모가 있습니다.주의: 이 클래스는 사용되지 않습니다.새로운 실장에서는 이 클래스를 확장하는 것이 아니라 맵인터페이스를 실장해야 합니다.안부 전해 주세요, 엔씨.
Object[][] data = {
{"mykey1", "myval1"},
{"mykey2", "myval2"},
{new Date(), new Integer(1)},
};
네, 키별로 값을 검색하려면 이 작업을 반복해야 합니다. 그러나 모든 값을 검색하려면 이 작업을 반복하는 것이 가장 좋습니다.
실제로 Java는 사전이라고 불리는 연관 배열을 지원합니다.
좀 더 생각해 보면, 이 문제에 대처하기 위한 범용적인 방법으로서 튜플을 버리고 싶습니다.튜플은 Java가 네이티브가 아니지만 자바튜플을 사용하여 다른 언어에서와 동일한 기능을 제공합니다.질문에 대한 대처 방법의 예는 다음과 같습니다.
Map<Pair<Integer, String>, String> arr = new HashMap<Pair<Integer, String>, String>();
Pair p1 = new Pair(0, "name");
arr.put(p1, "demo");
API가 제공하는 클래스와 메서드를 사용하여 트리플 및 기타 상위 그룹으로 확장할 수 있기 때문에 이 접근 방식을 좋아합니다.
PHP 코멘트입니다만, PHP는 좋아하지 않습니다.실제로 PHP는 (PHP에 대해) 매우 제한적인 예외/오류 수준을 설정하지 않는 한 (그때도 마찬가지일 수 있습니다) chugging을 계속합니다.
기본적으로는 기존 변수/범위를 벗어난 배열 요소에 대한 액세스가 할당하려는 값을 '설정 해제'하는 것입니다.아니요, 그건 null이 아닙니다.PHP는 Perl/C 계보를 가지고 있는 것으로 알고 있습니다.즉, 설정되지 않은 변수와 존재하지 않는 변수, 설정되었지만 NULL인 값, Boolean False 값, 기타 표준 랭거지가 가진 모든 값이 있습니다.이러한 항목을 개별적으로 테스트하거나 기능/구문에 내장된 올바른 평가를 선택해야 합니다.
언급URL : https://stackoverflow.com/questions/5122913/java-associative-array
'programing' 카테고리의 다른 글
C에 부호 없는 포화 덧셈을 어떻게 하나요? (0) | 2022.08.18 |
---|---|
Axios 다운로드 파일(오른쪽 확장자) (0) | 2022.08.18 |
컴포넌트 내 믹스인 콜방식(Vuej) (0) | 2022.08.18 |
"Assert" 기능은 무엇입니까? (0) | 2022.08.18 |
Vue 2.0 $on()으로 마이그레이션해도 $emit()이 들리지 않습니다. (0) | 2022.08.18 |