ArrayList
Faptul este că în Java obiectele nu au numai clasa ci și parametrii clasei, în timp ce parametrii se potrivesc când se apelează metodele și atunci când atribuirea nu este verificată, uneori compilatorul aruncă avertizări și nu știe ce parametru are acest obiect. Puteți crea un ArrayList
Ceva pe care nu l-am observat, că din ea avertismentul "Notă: Main.java folosește operațiuni nechetate sau nesigure" a fost pierdut. Sau este modul în care aceasta ar trebui să rămână, și afirmația că Java este mai bună decât profesioniști, securitatea performanței garantate ar trebui să fie împărțită în 0x100?
Text integral -
[Cut]
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Queue;
import java.util.logging.Level;
import java.util.logging.Logger;
clasa publică principală static int nextInt (StreamTokenizer in) încercați in.nextToken ();
retur (int) in.nval;
> Captura (IOException ex) Logger.getLogger (Main.class.getName ()) log (Level.SEVERE, nul, ex) .;
retur 0;
>
>
public static void principal (String [] args) aruncă FileNotFoundException StreamTokenizer în = new StreamTokenizer (nou FileReader ("input.txt"));
PrintWriter out = noul PrintWriter (fișier nou ("output.txt"));
int TEST_NUM = nextInt (in);
pentru (int the_test = 0; the_test
pentru (int i = 0; i
pentru (int k = 0; k
>
int [] st = nou int [N];
int [] d = nou int [N];
Arrays.fill (st, 0);
Arrays.fill (d, 987654321);
int start = nextInt (in);
st [start] = 1;
d [start] = 0;
coadă
qqq.add (start);
în timp ce (! qqq.isEmpty ()) int u = qqq.poll ();
pentru (int w. (ArrayList
dacă (st [w] == 0) qqq.add (w);
st [w] = 1;
d [d] = d [u] +1;
>
>
pentru (int i = 0; i
out.println ();
>
out.close ();
>
>
ArrayList
@SuppressWarnings ("neconfirmat")
ArrayList
Odată deja, acest avertisment este urât
Nu o mai faceti din nou, folositi ceva de genul ideone sau paste.pocoo.org
În primul rând, generic - sunt adesea întâlniri nesigure și avertisment - și nu puteți ajunge nicăieri. În al doilea rând, în Java 7, compilatorul tratează unele dintre aceste cazuri ca fiind sigure și nu scrie nimic. În al treilea rând, securitatea este atunci când programul nu se încadrează în acțiunea greșită, ci generează o excepție, care este prinsă și procesată. În mod similar, puteți cere să testați posibilitatea de împărțire cu 0 sau alocări de tip Integer x = (Integer) obj;
"securitatea este atunci când programul nu cade din acțiunea greșită, ci generează o excepție, care este prinsă și procesată"
Unde mă înșel greșit, considerând că atunci când o acțiune incorectă nu este omisă de compilator, este și mai sigură?
Puteți schimba compilatorul în general. Prin urmare, toate barierele dvs. pot fi complet evitate prin dezactivarea controalelor la nivelul JVM.
Pentru o explicație a ceea ce să scrieți
ArrayList
-- Vă mulțumesc foarte mult, se pare că aceasta este întrebarea închisă de 99%.
Și ce despre restul mesajului text - ceva fie prost scris, am citit rău, dar la început nu am înțeles. Am fost foarte supărat de declarația "Puteți crea un ArrayList
Pentru a le atribui la compilație, trebuie să faceți acest lucru prin conversia la tipul brut:
listă
listI.add (7);
Listă listă = listI;
listă
listS.add ("Java");
System.out.println (listS);
Când compilați, nu va exista nici o eroare, dar va exista un avertisment care poate fi văzut cu -XLint: neînchis
Acest lucru se face pentru compatibilitatea cu versiunile mai vechi (înainte de a 5-a Java).
Eu însumi am scris de obicei pe vectorul de pluses> dar cumva auzit recent acel vector
Cu toate acestea, ArrayList sau LinkedList nu pare să afecteze esența problemei principale.
Ce nu se potrivește matricei ArrayList?
Se pare mai ușor să se implementeze o operație cu un grafic.
Despre performanța este aproximativ aceeași, dar, în general, listele de contiguitate au avantajul potențial că adiacent la partea superioară a coastelor sunt coerente, spre deosebire de o listă mare, unde nu există o astfel de comandă.
Dacă doriți să finalizeze îndepărtarea coastelor, este posibil, în analogie pentru a face o matrice HashSet'ov dacă performanța nu este foarte important.
O întrebare interesantă este cum să faceți o structură rapidă pentru adăugarea / eliminarea marginilor / vârfurilor.