Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простая колекция 
:(
    Опции темы
SHOM
Дата 10.8.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



Код

         ArrayList shom = new ArrayList();
         Object[] arr=new Object[2];
         
         
         results = stmt.executeQuery(string);
         while (results.next()) {
             arr[0]=results.getLong(1);
             arr[1]=results.getString(2);
             shom.add(arr);
         }


         for (int i=0; i<shom.size(); i++) {

             System.out.println(shom.get(i));
         }


Как вывести все элементы?
PM MAIL   Вверх
ashain
Дата 10.8.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2011

Репутация: нет
Всего: 1



Код

System.out.println(shom.toString());

или просто 
Код

System.out.println(shom);

PM MAIL   Вверх
SHOM
Дата 10.8.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



Не, не вариант. А что если мне надо выводит только первый результ

А так по вашему выводит


[[Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583....... И так навсю страницу


Думаю, уже при объявление ArrayList надо делать двумерным

Это сообщение отредактировал(а) SHOM - 10.8.2011, 15:23
PM MAIL   Вверх
ashain
Дата 10.8.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2011

Репутация: нет
Всего: 1



Вопрос был как вывести все элементы? Тема "простая коллекция". соответственно 
Код

shom.toString();

всё остальное через циклы, в чём проблема?
PM MAIL   Вверх
SHOM
Дата 10.8.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



Цитата

[[Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583....... И так навсю страницу


Это по вашему решение, может они и есть все элементы, но хочу видит их такими, как при вводе ArrayList
PM MAIL   Вверх
gawriil
Дата 10.8.2011, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.3.2008

Репутация: нет
Всего: нет



А почему не Vector  или вообще массив ? (Естественно сначала с приведением)


Это сообщение отредактировал(а) gawriil - 10.8.2011, 16:53
PM MAIL   Вверх
nc30
Дата 10.8.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата(SHOM @ 10.8.2011,  15:35)
Цитата

[[Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583, [Ljava.lang.Object;@b0a583....... И так навсю страницу


Это по вашему решение, может они и есть все элементы, но хочу видит их такими, как при вводе ArrayList

Если приглядеться - адреса элементов в списке одинаковы. А это потому что вы в цикле не элементы в список заносите, а сам объект массива. Вот почему дженерики в Java 1.5 и появились, чтобы путаницы было меньше: компилятор не даст занести в типизированный список элемент "неправильного" типа.
Код

         while (results.next()) {
             arr[0]=results.getLong(1);
             shom.add(arr[0]);
             arr[1]=results.getString(2);
             shom.add(arr[1]);
         }

         for (int i=0; i<shom.size(); i++) {
             System.out.println(shom.get(i));
         }

Должно получиться.

Это сообщение отредактировал(а) nc30 - 10.8.2011, 17:05
PM MAIL   Вверх
SHOM
Дата 11.8.2011, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



Да, спасибо, так работает

А если усложнить задачу, надо вывести только данные от первого результа, то есть только arr[0]?

Это сообщение отредактировал(а) SHOM - 11.8.2011, 07:04
PM MAIL   Вверх
nc30
Дата 11.8.2011, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата(SHOM @ 11.8.2011,  06:40)
А если усложнить задачу, надо вывести только данные от первого результа, то есть только arr[0]?

В данном случае
Код

         for (int i = 0; i < shom.size(); i += 2)
            System.out.println(shom.get(i));

В общем, если массив размерностью arrLen, то i += arrLen.
PM MAIL   Вверх
SHOM
Дата 11.8.2011, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



Спасибо!

Код

         int n = 0;
         while (results.next()) {
             arr[0]=results.getLong(1);
             shom.add(arr[0]);
             arr[1]=results.getString(2);
             shom.add(arr[1]);
             n++;
         }

            
            
         Object [][] people_id = new Object[n][5]; //Этот массив на какую коллекцию поменять, массив не подходить, вторая размерность не известно

         
         int j=0;
         
         for (int i=0; i<shom.size(); i += arr.length) {
             results = stmt.executeQuery("SELECT people_id FROM tab WHERE id='"+ shom.get(i) +"'");
             
             
             n = 0;
             
             System.out.println(i+"=========================================="+shom.get(i+1));
             
             while (results.next()) {
                 people_id[j][n]=results.getLong(1);
                 System.out.println(results.getLong(1));
                 n++;
             }
             j++;
         }

PM MAIL   Вверх
Skipy
Дата 11.8.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



Ни на что не надо менять массив. Просто складывайте результаты сначала в ArrayList, создаваемый в цикле после запроса, а после того, как сложили - вызываете toArray и кладете в двухмерный массив как строку.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
SHOM
Дата 11.8.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.8.2011

Репутация: нет
Всего: нет



что бы оставить массив, надо же узнать, какой result вернет максимальное количество ответов, то есть надо их сравнивать на max, потом только объявит Object [][] people_id = new Object[n][?];
PM MAIL   Вверх
dorogoyIV
Дата 11.8.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



массив может быть неравномерным:
Код

import java.util.*;

public class Main
{
 public static void main(String [] args)
 {
  createArray();
 }

 private static void createArray()
 {
  int rowCount = new Random().nextInt(5) + 3;
  Object [][] arr = new Object [rowCount][];

  for(int i = 0; i < rowCount; i++)
  {
   int columnCount = new Random().nextInt(10);
   arr [i] = new Object [columnCount];

   for(int j = 0; j < columnCount; j++)
    arr [i][j] = 0;
  }
  showArray(arr);
 }

 private static void showArray(Object [][] arr)
 {
  for(int i = 0; i < arr.length; i++)
  {
   for(int j = 0; j < arr [i].length; j++)
    System.out.print(arr [i][j] + " ");

   System.out.print("  -> length = " + arr [i].length + "\n");
  }
 }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.