![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
No.4ベストアンサー
- 回答日時:
まず第一に
>配列全体でもし同じ値が既にあった場合に重複させないように格納する
と考えるから、悩む事になるのです。
ここは
配列全体でもし同じ値が既にあった場合には、格納しないで捨てて、次のデータを読みにいく
と考えれば良いのです。
そうすると「特定の値が配列に既存かどうか?」さえ判れば、質問者さんのやりたい事が可能になる訳です。
状況に合わせ、幾つかの方法を用います。
・ソート済みのファイルを読み込んで、配列に格納する場合。
ソートされているので、重複行は、ファイル上で連続しています。
処理は簡単で「直前に配列に格納したのと、今ファイルから読み込んだのが同じ行なら、読んだのを捨てて読み直す」だけです。
これは「直前に配列に格納したもの=配列に既存のもの」なので、やってる事は「値が配列に既存かどうか?」を判断しているのと同義です。
・バラバラのファイルを読み込んで、配列にはソートした状態で格納する場合。
これも処理は簡単で「事前に、元ファイルをソートした作業用ファイル」を作ってしまえば、前述のソート済みファイルの処理と同じ処理で済みます。
・バラバラのファイルを読み込んで、配列には読み込んだ順番で格納していき、重複行だけは無視する場合。
「データが複数のファイルになってて、ファイル単位で配列に追加していく」などの場合も該当。これが一番面倒。
データの規模が小さいなら「配列の先頭から見比べる」でも構わないけど、要素数が数十万件、数百万件になった場合は「ハッシュリスト」を使うなど、工夫が必要でしょう。
No.3
- 回答日時:
ArrayListを使ってみました。
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 2, 2, 1 };
ArrayList arrayList = new ArrayList(intArray);
var elements =
(from element in arrayList.Cast<int>()
select element).Distinct();
foreach (var element in elements)
{
Console.Write(element + " ");
}
}
}
No.2
- 回答日時:
Linqを使ってみました。
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,10 };
var elements =
(from element in intArray
select element).Distinct();
foreach (var element in elements)
{
Console.Write(element + " ");
}
}
}
ありがとうございます。
まだC#に触れて間が無いため、Linqというものは知りませんでした。
ちなみにArrayListで格納しています。
No.1
- 回答日時:
>>ファイルの内容を全て読み込ませて、配列に値を格納しているのですが、その際行単位ではなく、配列全体でもし同じ値が既にあった場合に重複させないように格納するには、どうすればよいでしょうか?
どのような処理をやろうとしているのか、質問の意味がわかりません。
推測ですが、データがもしキーでソートされているなら、直前に読み込んだデータとの重複チェックをすればOKです。
もしソートされていないなら、通常は、データのソート処理をこの処理の前に行います。
あるいは、1行読み込むごとに、配列にあるデータと同じか?をチェックして、同じなら配列に登録しないようにします。この方法だと、しだいにチェックする時間が長くなります。
どのような処理をやろうとしているのか、補足説明をお願いいたします。
この回答への補足
回答ありがとうございます。補足説明を追加致します。
>>1行読み込むごとに、配列にあるデータと同じか?をチェックして、同じなら配列に登録しないようにします。
まさにこのことを実現したいのです。お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのINDEXとMATCH関数でスピ...
-
エクセルで、絶対値の平均を算...
-
Excelのセルの色指定をVBAから...
-
array関数で格納した配列の型を...
-
表にフィルターをかけ、絞った...
-
読み込みで一行おきに配列に格納
-
配列がとびとびである場合の書き方
-
【VBA】ユーザーフォーム リス...
-
.NET - 配列変数を省略可能の引...
-
[エクセル]連続する指定範囲か...
-
Excel オートフィルタのリスト...
-
INDEX(D:D,L3)の意味は?
-
Datatableへの代入
-
スプレットシートのGetTextにつ...
-
Split関数でLong配列に格納する...
-
ヤフーファイナンス 株価時系...
-
VBA Dictionaryオブジェクトの...
-
DataSetから、DataTableを取得...
-
VBAで指定期間の範囲を抽出し、...
-
CSVファイルの読み込みと表示(V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
エクセルで、絶対値の平均を算...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
array関数で格納した配列の型を...
-
配列がとびとびである場合の書き方
-
VBA 配列に格納した値の平均の...
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
Excel オートフィルタのリスト...
-
iniファイルのキーと値を取得す...
-
【VBA】ユーザーフォーム リス...
-
Split関数でLong配列に格納する...
-
配列のSession格納、及び取得方...
-
VB6.0 ファイルの一括読込み
-
Dictionaryを使い4つの条件の一...
-
INDEX(D:D,L3)の意味は?
-
SUMPRODUCT関数を用いた最小値
おすすめ情報