2012-06-20 3 views
1

안녕하세요,배열을 다른 유형으로 구성하는 방법은 무엇입니까?

저는 Java에서 새로운 기능으로이 데이터를 배열 (6 행, 3 열)로 푸시하는 방법을 알아 내려고 노력하고 있습니까?

x1 John 6 
x2 Smith 9 
x3 Alex 7 
y1 Peter 8 
y2 Frank 9 
y3 Andy 4 

나중에 수학 계산을 위해 마지막 열의 숫자를 사용합니다.

public class Testing { 
    public static void main(String[] args) { 

     Employee eh = new Employee_hour(); 

     Employee_hour [] eh_list = new Employee_hour[6]; 
     eh_list[0] = new Employee_hour("x1", "John", 6); 
     eh_list[1] = new Employee_hour("x2", "Smith", 9); 
     eh_list[2] = new Employee_hour("x3", "Alex", 7); 
     eh_list[3] = new Employee_hour("y1", "Peter", 8); 
     eh_list[4] = new Employee_hour("y2", "Frank", 9); 
     eh_list[5] = new Employee_hour("y3", "Andy", 4); 
     print(eh_list); 
    } 

    private static void print(Employee_hour[] mass){ 
     for (int i = 0; i < mass.length; i++) { 
      System.out.print(mass[i] + " "); 
     } 
     System.out.println(); 
    } 
} 

하지만 출력으로이납니다 ...

[email protected] [email protected] testing.Employee_hour ... 내 코드입니다 @ 420a52f [email protected] [email protected] [email protected]

마지막 열의 숫자는 어떻게 얻을 수 있습니까?

+0

배열이 필요합니까? 가장 효율적인 데이터 구조가 아닙니다 –

+0

배열을 사용해야합니까, 아니면 다른 데이터 구조를 사용할 수 있습니까? 대표 데이터는 무엇이며 어떻게 사용합니까? Object [] [] 배열에 데이터를 넣으면 나중에 그 데이터를 사용하는 것이 번거로울 것입니다. – pgras

+0

배열이 아니면 맵을 사용하여 조사 할 가치가 있습니다. –

답변

3

자바는 강력한 형식이므로 모든 유형을 수용 할 수있는 배열을 만들 수 없습니다.
그러나 Object 유형의 다차원 배열을 만들 수 있으며 정수 값으로 java.lang.Integer을 사용할 수 있습니다.
대안은 테이블의 행을 나타내는 클래스를 만들고 그 클래스의 배열을 만드는 것입니다.

9

기록 용으로 특정 Java bean을 생성하지 않는 이유는 무엇입니까?

class Person { 
    String id; 
    String name; 
    int anotherNumber; 
    // constructor, getters, setters 
} 

그리고는 다음과 같이 사용 :

Person [] people = new Person[10]; 
people[0] = new Person("x1", "John", 6); 
... 

또는 더 나은 아직 대신 배열의 java.util.List를 사용합니다.

: 별도의 필드를, 당신이 중 하나가 소위 게터를 밭 공개 (매우 나쁜 생각을)하고 단순히 object_instance.field_name로를 참조하거나 제공하기 위해 필요에 액세스하려면

필드를 액세스

인쇄 할 때

class Person { 
    String id; 
    String name; 
    int anotherNumber; 
    // constructor, getters, setters 

    public int getAnotherNumber() { 
    return anotherNumber; 
    } 
} 

그런 다음 전화 :

for (int i = 0; i < mass.length; i++) { 
    System.out.print(mass[i].getAnotherNumber() + " "); 
} 

이유는 무엇 Y 시도한 ou는 작동하지 않았다 :

System.out.println(mass[0]) 귀하의 경우에는 전체 개체 표현이 인쇄되며, 기본적으로 귀하의 경우에 수행 한 내용이 인쇄됩니다.

class Person { 
    String id; 
    String name; 
    int anotherNumber; 
    // constructor, getters, setters 

    public String toString() { 
    return "{id="+id+", name="+name+", anotherNumber="+anotherNumber+"}"; 
    } 
} 
+0

나는이 접근법, 특히'List' 제안에 동의합니다. 'ArrayList'를 제네릭과 함께 사용하면'Person' 객체 만 전달할 수 있습니다. – eboix

+0

다시 감사합니다 Maksimov, 귀하의 업데이트 된 게시물은 전적으로 도와주세요. – devger

1

Array는 일반 객체의 배열을 사용할 수있는 형태 보증 모음입니다 : 당신이 ObjectString toString() 메소드를 오버라이드 (override) 할 필요가 좋네요을 수행합니다. 다른 방법으로는 collection Api을 사용하십시오.

2

배열 사용자 2 차원 배열로 저장하려는 경우 여기에 샘플이 있습니다.

String[][] a2 = new String[10][5]; 
    for (int i=0; i<a2.length; i++) { 
    for (int j=0; j<a2[i].length; j++) { 
    a2[i][j] = i; 
    System.out.print(" " + a2[i][j]); 
    } 
    System.out.println(""); 
    } 
    } 

더 나은 접근 방식은

class User { 
    String id; 
    String userName; 
    int userSomeValue; 

// 
} 

그런 다음 개체를 cretae하는 것

userList.get(index); 
를 사용하여 내용을 가져 오는 중 오류가 목록에 procesing에 대한

User ob1=new User(); 
// set the values. 
List<User> userList=new ArrayList<User>(); 
userList.add(ob1); 

사용이 목록을 밀어

0

저기 배열에 데이터를 저장하는 몇 가지 방법이 있지만 한 배열에 같은 유형의 값만 저장할 수 있습니다. 예를 들어 String, int 또는 float. 귀하의 경우에는 String을 사용해야하지만 번호가 포함되어 있어도 문자열 유형 변수로 계산할 수는 없습니다. maksimov가 설명하는 방법을 제안합니다.

관련 문제