Tüüpiline - või - tüüpiline?

Maaomaduste uurimiseks tugineb geograafia valdkond väga erinevat tüüpi kaartidele. Mõned kaardid on nii levinud, et laps tunneks need ära, samas kui teisi kasutavad ainult spetsialiseeritud valdkonnad. Mõned kõige levinumad tüübid on poliitilised, füüsilised, topograafilised, kliima-, majandus- ja teemakaardid.

Kiired faktid: Mapsi tüübid

  • Lihtsalt määratletud kaardid on Maa pinna pildid. Üldised viitekaardid dokumenteerivad pinnavorme, riigipiire, veekogusid, linnade asukohti jne.
  • Temaatilistel kaartidel kuvatakse konkreetsed andmed, näiteks keskmise sademete jaotus piirkonnas või teatud haiguse levik maakonnas.

Taust

Seda postitust lugedes sain aru, et mul on kalduvus kasutada "tüüpiline jaoks" pigem kui "tüüpiline kohta".

Pärast kiiret uurimist, lugedes mitut veebiallikat, leidsin, et mida rohkem ma lugesin, seda rohkem segasin. Tundsin, et pole kehtestatud reegleid, mis ütleksid, milline neist on sobivam.

Leidsin isegi need kaks tava samasse BBC artiklist,

"Maal on pisut tüüpiline jaoks Van Gogh paljude seal ilmunud inimeste tõttu, aga ka veski silmapaistva rolli tõttu väga tüüpiline. "

"Kuid ta lisas, et teose muud elemendid, mille erksad värvid on jämedalt lõuendile kinnitatud, olid tüüpilised kohta Van Goghi stiil ajal, mil ta Pariisis elas. "

Otsingud sõnadele „tüüpiline” ja „tüüpiline” (EL&U) andsid mõlemad olulisi tulemusi, ehkki näib, et „tüüpiline”.

5 vastust 5

see arv "ma olen" kui ainult üks sõna

Siin on veel üks viis, kuidas seda teha Java 8-s ilmunud asjadega:

Mida see siis teeb?

  1. See loeb tekstifaili täpsemaks mällu, täpsemaks baitimassiiviks: Files.readAllBytes (fail). See meetod ilmus Java 7-s ja võimaldab faile väga kiiresti laadida, kuid selle hinnaga, et fail jääb täielikult mällu ja maksab palju mälu. Kiiruse jaoks on see siiski hea näide.
  2. Baidi teisendatakse stringiks: uus string (Files.readAllBytes (fail), StandardCharsets.UTF_8), eeldades, et fail on UTF8-ga kodeeritud. Muutke oma vajaduste järgi. Hind on mälus juba niigi tohutu hulga andmete täielik koopia. See võib kiiremini töötage selle asemel mäluga kaardistatud failiga.
  3. String jagatakse muudes kui Wordi sõnades:. split (" W +"), mis loob kõigi teie sõnadega stringide massiivi.
  4. Loome sellest massiivist voo: Arrays.stream (.). See iseenesest ei tee väga palju, kuid vooluga saame teha palju toredaid asju
  5. Rühmitame kõik sõnad kokku: Collectors.groupingBy (Funktsioon. Identiteet (), TreeMap :: uus, loendamine ()). See tähendab:
    • Tahame sõnad grupeerida sõna enda järgi (identiteet ()). Võiksime ka nt. väiketäht siin kõigepealt siin, kui soovite, et grupeerimine ei oleks tõstutundlik. See saab lõpuks kaardi võtmeks.
    • Grupeeritud väärtuste otsimise tulemusel soovime puukaarti (TreeMap :: uus). TreeMaps sorteeritakse nende võtme järgi, nii et lõpuks saame neid hõlpsalt tähestikulises järjekorras väljastada. Kui te ei vaja sortimist, võite siin kasutada ka HashMap-i.
    • Väärtusena iga rühma jaoks tahame, et iga sõna esinemissagedus oleks olemas (lugedes ()). Taustal tähendab see, et iga sõna kohta, mille rühma lisame, suurendame loendurit ühe võrra.
  6. Alates 5. toimingust on meile jäänud kaart, mis kaardistab sõnad nende arvu järgi. Nüüd tahame need lihtsalt printida. Nii pääsete juurde kogu koos kõigi selle kaardi võtme- / väärtuspaaridega (.entrySet ()).
  7. Lõpuks tegelik printimine. Me ütleme, et iga element tuleks edastada println-meetodile: .forEach (System.out :: println). Ja nüüd jääb teile kena nimekiri.

Kui hea see vastus on? Negatiivne külg on see, et see on väga lühike ja seega väga väljendusrikas. Samuti saab see toimuda ainult ühe süsteemikõnega, mis peidab Files.readAllBytes'i taga (või vähemalt kindel arv, ma pole kindel, kas see tõesti töötab ühe süsteemikõnega) ja süsteemikõned võivad olla kitsaskoht. Näit. kui loete faili voost, võib iga loetav kõne käivitada süsteemikõne. Seda vähendab märkimisväärselt BufferedReaderi kasutamine, nagu nimigi viitab puhvritele. kuid stilly readAllBytes peaks olema kiireim. Selle hind on see, et see tarbib tohutult mälu. Kuid vikipeedia väidab, et tüüpilises ingliskeelses raamatus on 500 lehekülge, mis sisaldavad 2000 tähemärki ühes lehes, mis tähendab umbes 1 megabaidi, mis ei tohiks mälukasutuse osas probleeme tekitada, isegi kui kasutate nutitelefoni, vaarikapi või tõesti vana arvutit.

Need lahendused hõlmavad mõningaid optimeerimisi, mis ei olnud enne Java 8 võimalikud. Näiteks idioom map.put (sõna, map.get (sõna) + 1) nõuab, et sõna "sõna" otsitaks kaardilt kaks korda, mis on tarbetu raiskamine.

Kuid ka lihtsat silmust võib olla lihtsam kompilaatori jaoks optimeerida ja see võib salvestada mitmeid meetodikõnesid. Nii et ma tahtsin teada ja panin selle proovile. Ma lõin faili, kasutades:

Mis annab mulle umbes 1,3 MB faili, nii et see pole ebaharilik raamatu jaoks, kus enamikku sõnu korratakse 15 korda, vaid juhuslikult, et sellest kõrvale hiilida. Siis viisin läbi järgmised testid:

Tulemuseks olid:

Pange tähele, et varem testisin ka TreeMapsiga, kuid leidsin, et HashMaps oli palju kiirem, isegi kui ma väljundit hiljem sorteerisin. Muutsin ka ülaltoodud teste pärast seda, kui Tagir Valeev rääkis mulle allpool olevates kommentaarides Pattern.splitAsStream () meetodist. Kuna sain väga erinevaid tulemusi, jätsin testid üsna pikaks ajaks jooksma, nagu näete ülaltoodud pikkuse järgi sekundites, et saada sisulisi tulemusi.

Kuidas hindan tulemusi:

"Segatud" lähenemisviis, mis ei kasuta vooge üldse, vaid kasutab Java 8-s kasutusele võetud "ühendamise" meetodit tagasihelistamisega, parandab jõudlust. See on midagi, mida ma ootasin, sest klassikaline rakenduse get / put appraoch nõuab võtme otsimist HashMapis kaks korda üles ja "ühendamise" lähenemisviisi korral pole seda enam vaja.

Minu üllatuseks on Pattern.splitAsStream () appraoch tegelikult aeglasem kui Arrays.asStream (. Split ()). Vaatasin mõlema rakenduse lähtekoodi ja märkasin, et split () kõne salvestab tulemused ArrayList, mille suurus on null ja mida suurendatakse vastavalt vajadusele. See nõuab paljusid kopeerimistoiminguid ja lõpuks veel ühte kopeerimistoimingut, et kopeerida ArrayList massiivi. Kuid "splitAsStream" loob tegelikult iteraatori, mida minu arvates saab vajadusel küsida, vältides neid kopeerimistoiminguid täielikult. Ma ei vaadanud päris täpselt kõiki allikaid, mis iteraatori vooobjektiks teisendab, kuid see tundub olevat aeglane ja ma ei tea, miks. Lõpuks võiks see teoreetiliselt olla seotud CPU mälupuhveritega: Kui ikka ja jälle täidetakse sama ja sama koodi, asub kood tõenäolisemalt vahemälus, siis tegelikult töötab see suurtel funktsiooniahelatel, kuid see on väga metsik spekulatsioon minu poolel. See võib olla ka midagi täiesti erinevat. Kuid splitAsStream VÕIB on parem mälu jalajälg, võib-olla see nii pole, ma ei profiili seda.

Voogude lähenemine on üldiselt üsna aeglane. See pole täiesti ootamatu, kuna toimub üsna palju meetodi kutsumisi, sealhulgas näiteks midagi nii mõttetu nagu Function.identity. Kuid ma ei oodanud erinevust selles suurusjärgus.

Huvitava kõrvalmärkusena leian segase lähenemise, mida oli kõige kiiremini lugeda ja mõista. Ühendamiskutsel pole minu jaoks kõige silmatorkavamat mõju, kuid kui teate, mida see meetod teeb, tundub see mulle kõige loetavam, samal ajal on käsk groupingBy minu jaoks keerulisem aru saada. Ma arvan, et võib tekkida kiusatus öelda, et see rühmitusBy on nii eriline ja väga optimeeritud, et seda on mõistlik kasutada esinemiseks, kuid nagu siin näidatud, see pole nii.

Poliitilised kaardid

Poliitiline kaart ei näita topograafilisi jooni, nagu mäed. See keskendub ainult koha riiklikele ja riigipiiridele. Need kaardid hõlmavad ka suurte ja väikeste linnade asukohti, sõltuvalt kaartide detailsusest.

Tüüpiline näide poliitilisest kaardist on kaart, mis näitab 50 USA riiki ja nende piire koos Ameerika Ühendriikide rahvusvaheliste piiridega.

Segadus

Püüdes seda mõtestada, jõudsin järeldusele, et peaksin kasutama "of", kui tüüpilisus on midagi sisemine (omadus või märk sellest, millest räägiti) ja kasutage "jaoks", kui sellist tüüpilisust tuleks vaadata väliselt. Nagu need kaks näidet Oxfordi edasijõudnute sõnaraamatust,

See söögikord on tüüpiline kohalikule kokandusele. (sisemine)
Minu jaoks tüüpiline tööpäev algab kell 7.30. (väline)

Kuid varsti tundsin end kohmetuna, kui leidsin, et keegi mainis inglise keele grammatikates 7. küsimust, algtase # 71,

Selline halb käitumine on tüüpiline. ärahellitatud laps.

Küsimus oli loetletud punktis "briti ja ameerika inglise keel", mis tähendab, et iga murre eelistab ühte kasutamist teise asemel. Kuid mul on tunne, et see võib osutuda valeks.

Kas on mõnda head rusikareeglit tüüpiline vs. tüüpiline?

Füüsilised kaardid

Füüsiline kaart dokumenteerib koha maastikuomadusi. Need kaardid näitavad üldiselt selliseid asju nagu mäed, jõed ja järved. Veekogud on tavaliselt näidatud siniselt. Mägesid ja kõrguse muutusi näidatakse kõrguse kuvamiseks mõnikord erinevate värvide ja varjunditega. Füüsikalistel kaartidel tähistavad rohelised tavaliselt madalamaid kõrgusi, pruunid aga tavaliselt kõrgemaid kõrgusi.

See Hawaii kaart on füüsiline kaart. Madala kõrgusega rannikualad on näidatud tumeroheliselt, kõrgemad aga oranžilt tumepruunini. Jõed on näidatud siniselt.

Topograafilised kaardid

Topograafiline kaart sarnaneb füüsilise kaardiga selle poolest, et see näitab erinevaid füüsilise maastiku tunnuseid. Erinevalt füüsilistest kaartidest kasutab seda tüüpi kaart aga maastiku muutuste näitamiseks värvide asemel kontuurjooni. Kontuurjooned topograafilistel kaartidel asetsevad harilikult korrapäraste vahedega, et näidata kõrguse muutusi (nt iga joon tähistab 100-jalast kõrguse muutust). Kui jooned asuvad üksteise lähedal, tähendab see, et maastik on järsk.

Kliimakaardid

Kliimakaart näitab teavet piirkonna kliima kohta. Need kaardid võivad näidata näiteks piirkonna konkreetseid kliimavööndeid, mis põhinevad temperatuuril, lume hulgal, mida piirkond saab, või pilves päevade keskmisel arvul. Nendel kaartidel kasutatakse erinevate kliimaalade kuvamiseks tavaliselt värve.

See Austraalia kliimakaart kasutab värve, et näidata erinevusi Victoria parasvöötme ja mandri keskel asuva kõrbepiirkonna vahel.

Majandus- või ressursikaardid

Majandus- või ressursikaart näitab konkreetset tüüpi majandustegevuse või loodusvarade olemasolu piirkonnas, kasutades erinevaid sümboleid või värve sõltuvalt sellest, mida kujutatakse.

Näiteks see Brasiilia majandustegevuse kaart kasutab värve, et näidata antud piirkonna erinevaid põllumajandustooteid, tähti loodusvarade jaoks ja sümboleid erinevate tööstusharude jaoks.

Teekaardid

Teekaart on üks enim kasutatud kaarditüüpe. Need kaardid näitavad suuremaid ja väiksemaid maanteid ja teid (sõltuvalt detailsuse astmest), aga ka selliseid asju nagu lennujaamad, linnad ja huvipunktid, näiteks pargid, telklaagrid ja monumendid. Teekaardi olulisemad kiirteed on üldiselt näidatud paksu, punase joonega, vähemtähtsad teed on aga heledama värviga ja kitsamate joontega.

Näiteks California teekaardil oleks kujutatud riikidevahelisi maanteid, millel on lai punane või kollane joon, samas kui osariikide maanteid näidatakse kitsama joonega, sama värviga. Sõltuvalt detailsuse tasemest võib kaardil näidata ka maakondlikke teid, peamisi linnaartereid ja maapiirkondade marsruute. Neid kujutatakse halli või valge varjundina.

Temaatilised kaardid

Temaatiline kaart on kaart, mis keskendub kindlale teemale või eriteemale. Need kaardid erinevad kuuest ülalnimetatud üldkaardist, kuna need ei näita ainult selliseid jooni nagu jõed, linnad, poliitilised alajaotused, kõrgused ja maanteed. Kui need üksused ilmuvad teemakaardile, on need taustteavet ja neid kasutatakse kaardi teema täiustamiseks võrdluspunktidena.

See Kanada kaart, mis näitab näiteks rahvastiku muutusi aastatel 2011–2016, on hea näide teemakaardist. Vancouveri linn jaguneb Kanada loenduse alusel piirkondadeks. Populatsiooni muutusi tähistavad värvusvahemikud muutumise astmest lähtuvalt rohelisest (kasv) kuni punase (kadumiseni).